第3天-讲义cms页面管理开发v1_第1页
第3天-讲义cms页面管理开发v1_第2页
第3天-讲义cms页面管理开发v1_第3页
第3天-讲义cms页面管理开发v1_第4页
第3天-讲义cms页面管理开发v1_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学成第3天 讲义-CMS页面管理开发1 自定义条件查询1.1 需求分析在页面输入查询条件,查询符合条件的页面信息。查询条件如下:站点Id:精确匹配模板Id:精确匹配页面别名:模糊匹配.1.2 服务端1.2.1使用 CmsPageReitory中的findAll(Exle v r1, Pageable var2)方法实现,无需定义。下边测试ndAll方法实现自定义条件查询:/自定义条件查询测试Testpublic void te tFindAll() /条件匹配器ExleMattcchheerr elleeMMatcher = ExleMatcher.matching();exlleeMMaat

2、tcchher = exleMatcher.withMatcher(pageAliase,ExleMatcher.GenericPropertyMatchers.contains();/页面别名模糊查询,需要自定义字符串的匹配器实现模糊查询/ExleMatcher.GenericPropertyMatchers.contains() 包含/ExleMatcher.GenericPropertyMatchers.startsWith()/开头匹配/条件值CmsPage cmsPage = new CmsPage();/站点ID cmsPage.setSiteId(5a751fab6abb5044

3、e0d19ea1);/模板IDcmsPage.setTemplateId(5a962c16b00ffc514038fafd); cmsPage.setPageAliase(分类导航);/创建条件实例/Exle exle = Exle.of(cmsPage, exleMatcher);Pageable pageable = negeRequest(0, 10);Page all = cmsPageReitory.findAll(exle, pageable);System.out.prln(all);1.2.2 Service在PageService的ndlist方法中增加自定义条件查询代码/*

4、页面列表分页查询parage 当前页码param size 页面显示个数param queryPageRequest 查询条件return 页面列表*/public QueryResponseResult findList(/条件匹配器page,size,QueerryyPPaaggeeRReeqquue t quer ageRequest)/页面名称模糊查询,需要自定义字符串的匹配器实现模糊查询ExleMatcher exleMatcher = ExleMatchhee .matching()leMat her.GenericPropertyMatche s.contains();.with

5、Matcher(pageAliase, Ex/条件值CmsPage cmsPage = new CmsPage();/站点IDif(StringUtils.isNotEmpty(querryyPPaaggeeRReeqquueesstt.g tSiteId() cmsPage.setSiteId(queryPPaaggeeRReeqquueesstt.ggeettSSiitteeIIdd();/页面别名if(StringUtils.isNootttEEEmmmppptttyyy queryPageRequest.getPageAliase() cmsPage.setPPaaagggeeeAAA

6、llliiiaaassseee(qqq eryPageRequest getPageAliase();/创建条件实例Exl exle = Exle.of(cmsPage, exleMatcher);/页码page = p1a;ge/分页对象Pageable pageab e = ne/分页查询geRequest(page, size);Page all = cmsPageReitory.findAll(exle,pageable);QueryResult cmsPageQueryResult = new QueryResult(); cmsPageQueryResult.setList(all

7、.getContent(); cmsPageQueryResult.setTotal(all.getTotalElements();/返回结果return new QueryResponseResult(CommonCode.SUCS,cmsPageQueryResult);1.2.3 Controller无需修改1.2.4 测试使用SwaggerUI测试1.3 前端1.3.1 页面1、增加查询表单elform :mmseeId placeholder=params页面别名:查询2、数据模型对象增加siist、pageAliase、siteId,如下:data() return siist:,

8、/站点列表 list:,total:50, params:siteId:, pageAliase:,page:1,/页码size:2/每页显示个数3、在钩子方法中 构建siist站点列表mounted() /默认查询页面 this.query()/初始化站点列表this.siist = siteId:5a751fab6abb5044e0d19ea1, siteName:门户主站,siteId:102, siteName:测试站1.3.2 Api调用1、向服务端传递查询条件,修改,如 :/public是对axios的工具类封装,定义了http请求方法import http from ./././

9、base/api/public import querystring from querystringlet sysConfig = require(/./config/sysConfig)let apiUrl = sysConfig.xcApiUrlPre;export const page_list = (page,size,params) = /将json对象转成key/value对let query = querystring.stringify(params)return http.requestQuickGet(apiUrl+/cms/page/list/+page+/+size+

10、/?+query)2、页面调用api方法cms j/查询query:function () cmsApi.page_list(this.params.page,this.params.size,this.params).then(res)=console.log(res)this.total = res.queryResult.total this.list = res.queryResult.list)测试如下:2 新增页面2.1 新增页面接口定义1、定义响应模型Datapublic class CmsPageResul extends ResponseReCmsPage cmsPag ;p

11、ublic CmsPPaagg Res lt(ResultCode resultCode,CmsPage cmsPage) super(resuullttCCooddee ;this.cmsPage = ccmmssPPaage;2、定义添加Api在api工程中添加接口:ApiOperation(添加页面)public CmsPageResult add(CmsPage cmsPage);sult 2.2 新增页面服务端开发2.2.1 页面唯一索引在cms_page集中上创建页面名称、站点Id、页面wth为唯一索引2.2.21、添加根据页面名称、站点Id、页面wth查询页面方法,此方法用于校验

12、页面是否存在publicerface CmsPageReitory extends MongoReitory /根据页面名称、站点id、页面路径查询CmsPage findByPageNameAndSiteIdAndPageWth(String pageName,SSttrriinng siteId,StringpageWth);。2、使用 CmsPageRe2.2.3 Serviceitory提供的save方法 。/添加页面public CmsPageResult add(CmsPage cmsPage)/校验页面是否存在,根据页面名称 站点Id、页面wth查询CmsPage cmsPage

13、1 =cmsPageReitory.findByPageNaammmeeeAAAnnndddSSSiiittteeeIIIdddAAAnnndddPPPaaagggeeeWWWth(cmsPage.getPageName(),cmsPage.getSiteId(), cmsPaggeee.gggeeetttPPPaaagggeeeWWWif(cmsPage1=nuullll)th();cmsPage.sseettPPaaggeeIIdd(nnuullll);/添加页面主键由spring data 自动生成cmsPageeRRe/返回结果i ory.save(cmsPage);Cm PageRe

14、sult cmsP geResult = new CmsPageResult(CommonCode.SUCS,cmsPage);return cmsPageResult;return neew CCmmssPPaaggeeRReessuulltt(CCommonCode.FAIL,null);2.2.4 Controller/添加页面OverridetMap(/add)public CmsPageResult add(RequestBody CmsPage cmsPage) return pageService.add(cmsPage);2.2.5 接口测试使用tman测试t请求:请求内容为j

15、son数据,测试数据如下:dataUrl: string, htmlFileId: string, pageAliase: string,pageCreateTime: 20180611T02:01:25.667Z, pageHtml: string,pageName: 测试页面,pageParameter: string,pagePhysicalPath: string,pageSus: string,pageTemplate: string,pageType: string,pageWth: string,siteId: string,templateId: string成功响应结果:失败

16、响应结果:2.3 新增页面前端开发新增页面编写page_add vue页面使用Element-UI的form组件编写 加表单内容,页面效果如下:1、创建page_add.vue页面2、配置路由在cms模块的路由文件中配置“添加页面”的路由:path:/cms/page/add,name:新增页面,ccoommppoonneennt: page_add,hidden:true注意:由于“添加页面”不需要显示为一个菜单,这里hidde 设置为tr 测试,在浏览器地址栏输入e隐 菜单。3、在页面列表添加“添加页面”的按钮实际情况是用户进入页面查询列表,点击“新增页面”按钮进入新增页面窗口。在查询按钮

17、的旁边添加新增页面说明:router-link是vue提供的路由功能,用于在页面生成路由to:目标路由地址 4、完善页面内容:代码如下:,最终在html渲染后就是a。eloptionra静 =rad动io态提交Form-Item Attributes说明:prop 表单域 m字段,在使用 validate、resetFields 方法的情况下,该属性是必填的label文本详情属性及事件参考/component/form5、数据对象data() return /站点列表siist:,/模版列表templaist:,/新增界面数据 pageForm: siteId:, templateId:, p

18、ageName: , pageAliase: ,pageWth: ,pageParameter:, pagePhysicalPath:, pageType:, pageCreateTime: new Daattee(),methods: addSubmit()alert(提交 )6、站点及模板数据(先使用静态数据)在created钩子方法中定义,created是在html渲染之前执行,这里使用created。created:function()/初始化站点列表 this.siist = siteId:5a751fab6abb5044e0d19ea1, siteName:门户主站,siteId:

19、102,siteName:测试站/模板列表 this.templaist = templateId:5a962b52b00ffc514038faf7, templateName:首页,templateId:5a962bf8b00ffc514038fafa, templateName:轮播图7、测试预览新增页面按钮:新增页面表单: 添加返回进入新增页面后只能通过菜单再次进入页面列表,可以在新增页面添加“返回”按钮,点击返回按钮返回到页面列表。1) 新增页面按钮带上参数新增页面说明:query表示在路由url上带上参数2)定义返回方法在page_add.vue上定义返回按钮返回在page_add.

20、vue上定义返回方法go_back()this.$routush(path: /cms/page/list, query: page: this.$route.query.page, siteId:this.$route.query.siteId)说明:this.$route.query 表示取出路由上的参数列表 有两个 路由参数的方法:a、通过在路由上添加key/value串使用this.$rout quue y来取参数,例如:/router1?id=123 ,/router1?id=456可以通过this.$rrroute.qu ry.id获取参数id的值。b、通过将参数作为路由一部分进行

21、传参数使用this.$route.params来获取,例如:定义的路由为/router1/:id ,请求th/irso来.u$获tre时o取ru1,t/可e1此.2以p3种a通r情a过m况s.用itdhis.$rou是拿不到的。3)查询列表支持回显进入查询列表,从url中获取页码和站点id并赋值给数据模型对象,从而实现页面回显。url例子:created() /从路由上获取参数 this.params.page = Numbarse(this.$route.query.page|1);this.params.siteId = this.$route.query.siteId|;te.query

22、.id小技巧:使用 |返回第一个有效值 表单校验1、配置校验规则:Element-UI的Form组件提供表单校验的方法:在form属性上配置rules(表单验证规则)在数据模型中配置校验规则:pageFormRules: siteId:required: true, message: 请选择站点, trigger: blur,templateId:required: true, message: 请选择模版, triggeerrr:,pageName: required: true, message: 请输入页面名称, t igger: blur ,lurpageWth: required:

23、true, message: 请输入,pagePhysicalPath: 路径trigger:lurrequired: true, messssage: 请输入物理路径trigger: blur的校验规则参考e eme.io/#/zponent/form中“表单验证”的例子。2、点击提交按钮触发校验1)在form表单上添加 ref属性(re =pageForm)在校验时此表单对象2)执行校验this.$refs.pageForm.validate(valid) = if (valid) alert(提交); else alert(校验失败); return false;)2.3.2 Api调用

24、1、在cms.js中定义page_add方法。/*页面添加*/export const page_add = params = return http.requestt(apiUrl+/cms/page/add,ppaarraamms)2、添加事件本功能使用到两个UI组件:、使用的message-box组件弹出确认提交窗口(ponent/message-boxthis.$confirm(确认提交吗? , 提示, ). hen() = )2、使用 message组件提示操作结果 ()this.$message(messssaaggee: 提交成功,type: succ ssss)完整的代码如下:

25、addSubmit() this.$refs.pageForm.validate(valid) = if (valid) this.$confirm(确认提交吗?, 提示, ).then() = cmsApi.page_add(this.pageForm).then(res) = console.log(res);if(recs)this.$message(message: 提交成功,)type: suc);sthis.$refspageForm.resetFields();elsethis.$message.error(提交失败););););下边是测试:1、进入页面列表页面2、点击“增加页

26、面”按钮3、输入页面信息点击“提交”3 修改页面修改页面用户操作流程:1、用户进入修改页面,在页面上显示了修改页面的信息2、用户修改页面的内容,点击“提交”,提示“修改成功”或“修改失败”3.1 修改页面接口定义修改页面需要定义的API如下:ApiOperation(通过ID查询页面)public CmsPage findById(String id);ApiOperation(修改页面)public CmsPageResult edit(String id,CmsPage cmsPagee);说明:提交数据使用t、put都可以,只是根据http方法的规范 put方法是对服务器指定资源进行修改

27、,所以这里使用put方法对页面修改进行修改。3.2 修改页面服务端开发3.2.1使用 Spring Data提供的ndBy d方法完成根据主键查询 。使用 Spring Data提供的sav 方法完成数据保存 。3.2.2Service/根据id查询页面public CmsPage getById(String id) Optional optional = cmsPageRe if(optional.isPresent()return optional.get();/返回空 return null;/更新页面信息itory.findById(id);public CmsPageResult

28、update(String id,CmsPage cmsPage) /根据id查询页面信息CmsPage one = this.getById(id);if (one != null) /更新模板idotTemplateId(cmsPage.getTemplateId();/更新所属站点otSiteId(cmsPage.getSiteId();/更新页面别名otPageAliase(cmsPage.getPageAliase();/更新页面名称o/更新 otPageName(cmsPage.getPageName();路径tPageWth(cmsPage.getPageWth();/更新物理路

29、径otPagePhysicalPath(cmsPage.getPagePhysicalPath();/执行更新CmsPage save = cmsPageRe if (save != null) /返回成功itory.save(one);CmsPageResult cmsPageResult = newreturn cmsPageResult;CmsPageResult(CooommmmooonnnCCCooodddeee.SSSUUUCCS, save);/返回失败return new CmsPageResult(CommonCode.FAIL,nullll);3.2.3Controller

30、1、根据id查询页面OverrideGetMap(/get/iiiddd)public CmsPage findById(PathVariabl id) String id) return pageS rvice.getById(id);2、保存页面信息OverridePutMap(/edit/id)/这里使用put方法,http 方法中put表示更新public CmsPageResult edit(PathVariable(id) String id, RequestBody CmsPage cmsPage) return pageService.update(id,cmsPage);3.

31、3 修改页面前端开发3.3.1 页面处理流程页面的处理流程如下:1、进入页面,通过钩子方法请求服务端获取页面信息,并赋值给数据模型对象2、页面信息通过数据绑定在表单显示3、用户修改信息点击“提交”请求服务端修改页面信息接口修改页面编写page_edit页面修改页面的布局同添加页面,可以直接添加页面,在添加页面基础上修改。下边编写页面内容:1、编写page_edit.vue页面布局同添加页面,略。2、配置路由进入修改页面传入pageIdimport page_edit from /module/cms/pppage page_edit.v e; path: /cms/page/edit/:pag

32、eId, name:修改页面,compon nt: page_edit,hidden:true,3、在页面列表添加“编辑”参考table组件的例子,在page_list.vue上添加“操作”列编辑编写edit方法/修改edit:function (pageId) this.$routush( path: /cms/page/edit/+pageId,query:page: this.params.page,siteId: this.params.siteId)4、测试预览点击“编辑”打开修改页面窗口。 页面内容显示本功能实现:进入修改页面立即显示要修改的页面信息。1、定义api方法/*页面查询

33、*/export const page_get = id = return http.requestQuickGet(apiUrl+/cms/ppaaggee/ggeett/+iid)2、定义数据对象进入修改页面传入pageId参数,在数据模型中添加pageId。data()return /页面id pageIIId: ,3、在created钩子方法 中查询页面信息created: function () /页面参数通过路由传入,这里通过this.$route.params来获取 this.pageId=this.$route.params.pageId;/根据主键查询页面信息cmsApi.p

34、age_get(this.pageId).then(res) = console.log(res);if(recs)this.pageForm = res.cmsPage;);7、预览页面回显效果3.3.4 Api调用1、定义api方法/*页面修改,采用put方法*/export const page_edit = (id,params) = return http.requestPut(apiUrl+/cms/page/edit/+id,params)2、提交按钮方法添加提交按钮事件:提交3、提交按钮事件内容:editSubmit() this.$refs.pageForm.validate

35、(valid) = if (valid) this.$confirm(确认提交吗?, 提示, ).then() = cmsApi.page_edit(this.pageId,this.pageForm).then(res) = console.log(res);if(recs)this.$message(message: 修改成功,type: suc);/自动返回sthis.go_back();elsethis.$message.error(修改失败););););4、测试修改页面信息,点击提交。删除页4 面用户操作流程:1、用户进入用户列表,点击“删除”2、执行删除操作,提示“删除成功”或“

36、删除失败”4.1 删除页面接口定义ApiOperation(通过ID删除页面)public ResponseResuelete(String id);4.2 删除页面服务端开发4.2.1使用 Spring Data提供的deleteById方法完成删除操作 。4.2.2 Service/删除页面public ResponseResuelete(String id)CmsPage one = this.getById(id); if(one!=null)/删除页面cmsPageReitory.deleteById(id); return new ResponseResult(CommonCode

37、.SUCreturn new ResponseResult(CommonCode.FAIL);S);4.2.3Controller(/del/id) /使用http的delete方法完成岗位操作DeleteMappublic ResponseResuelete(PathVariaabbllee(iidd) Stringid) return pageService.delete(id);4.3 删除页面前端开发4.3.1 Api方法/*页面删除*/export const page_del = id =return http.requueessttDDeelleettee(aappiiUrl+/

38、cms/page/del/+id)4.3.2编写页面1、在page_list.vue页面添加删除按钮编辑删除2、删除事件/删除del:function (pageId) this.$confirm(确认删除此页面吗?, 提示, ).thennn() = cmsApi.page_del(pageId).then(res)=if(recs)this.$message(type: sucs,message: 删除成功!);/查询页面 this.query()elsethis.$message( type: errooorr,message: 删除失败!);)5 异常处理5.1 异常处理分析从添加页面

39、的service方法中找问题:/添加页面public CmsPageResult add(CmsPage cmsPage)/校验页面是否存在,根据页面名称、站点Id、页面wth查询CmsPage cmsPage1 =cmsPageReitory.findByPageNameAndSiteIdAndPageWth(cmsPage.getPageName(),cmsPage.getSiteId(), cmsPage.getPageWif(cmsPage1=null)th();cmsPage.setPageId(null);/添加页面主键由spring data 自动生成cmsPageRe/返回结果

40、itory.save(cmsPage);CmsPageResult cmsPageResult = new CmsPageResult(CommonCode.SUCreturn cmsPageResult;S,cmsPage);return new CmsPageResult(CommonCode.FAIL,null);问题:1、上边的代码只要操作不成功仅向用户返回“错误代码:11111,失败信息:操作失败”,无法区别具体的错误信息。2、service方法在执行过程出现异常在哪捕获?在service中需要都加t,如果在controller也需要添加try/catch,代码冗余严重且不易解决方案

41、:。1、在Service方法中的编码顺序是先校验判断,有问题则抛出具体的异常信息 最 执行具体的业务操作,返回成功信息。2、在异常处理类中去捕获异常,无需controller捕获异常,向用户返回规范的响应信息。代码模板如下:/添加页面public CmsPageResullttt add(CmsPage/校验cmsPagee是否为空 if(cmsPaggee = null)cmsPage)/抛出异常,/请求/根据页面名称查询(页面名称已在mongodb创建了唯一索引) CmsPage cmsPage11 =cmsPageReitory.findByPageNameAndSiteIdAndPag

42、eWth(cmsPage.getPageName(),cmsPage.getSiteId(), cmsPage.getPageW/校验页面是否存在,已存在则抛出异常 if(cmsPage1 !=null)/抛出异常,已存在相同的页面名称/.th();cmsPage.setPageId(null);/添加页面主键由spring data 自动生成CmsPage save = cmsPageRe/返回结果itory.save(cmsPage);CmsPageResult cmsPageResult = new CmsPageResult(CommonCode.SUCreturn cmsPageRe

43、sult;S,save);ry/catch5.2 异常处理流程系统对异常的处理使用1、自定义异常类型。的异常处理流程:2、自定义错误代码及错误信息。3、对于可预知的异常由程序员在代码中主动抛出,由SpringMVC捕获。可预知异常是程序员在代码中手动抛出本系统定义的特定异常类型,由于是程序员抛出的异常,通常异常信息比较齐全,程序员在抛出时会指定错误代码及错误信息,获取异常信息也比较方便。4、对于不可预知的异常(运行时异常)由SpringMVC捕获Exception类型的异常。不可预知异常通常是由于系统出现bug、或一些不要抗拒的错误(比如网络中断、服务器宕机等),异常类型为RuntimeExc

44、eption类型(运行时异常)。5、可预知的异常及不可预知的运行时异常最终会采用请求响应给客户端。的信息格式(错误代码+错误信息)来表示,最终也会随异常抛出及处理流程:1、在controller、service、中程序员抛出自定义异常;springMVC框架抛出框架异常类型2、由异常捕获类捕获异常,并进行处理3、捕获到自定义异常则直接取出错误代码及错误信息,响应给用户。4、捕获到非自定义异常类型首先从Map中找该异常类型是否对应具体的错误代码,如果有则取出错误代码和错误信息并响应给用户,如果从Map中找不到异常类型所对应的错误代码则5、将错误代码及错误信息以Json格式响应给用户。为99999

45、错误代码并响应给用户。5.3 可预知异常处理5.3.1 自定义异常类在common工程定义异常类型。package com.xuecheng.framework.exception;import com.xuecheng.framework.m.response.ResultCode;public class CustomException extends RuntimeExceptiiion private ResultCode resultCode;public CustomException(ResultCode resultCode) /异常信息为错误代码+异常信息super(错误代码

46、:+resultCode.code()+错误信息 + esultCode.message();this.resultCode = resultttCode;public ResultCode getResultCode() return this.resultCode;5.3.2 异常抛出类package com.xuecheng.framework.exception;import com.xuecheng.framework.m.response.ResultCode;public class ExceptionCast /使用此静态方法抛出自定义异常public sic void cas

47、t(ResultCode resultCode) throw new CustomException(resultCode);5.3.3 异常捕获类使用 ControllerAdvice和ExceptionHandler注解来捕获指定类型的异常package com.xuecheng.framework.exception;import com.xuecheng.framework.mimport com.xuecheng.framework.m.response.ResponseResult;.response.ResultCode;import import import importim

48、port.slf4j.Logger;.slf4j.LoggerFactory;.springframework.web.bind.anno.springframework.web.bind.anno.springframework.web.bind.annoion.ControllerAdvice; ion.ExceptionHandler;ion.ResponseBody;ControllerAdvicepublic class ExceptionCatch private sic final Logger LOGGER = LoggerFactorryyy getLogger(Except

49、 onCatch.class);/捕获 CustomException异常ExceptionHandler(CustomException.class) ResponseBodypublic ResponseResult customExceptiiooonnn(CCCuuussstttooommmEEExxx eption e) LOGGER.error(catch exception : rnexcepti n: ,e getMessage(), e); ResultCode resultCode = e.getResultCode();ResponseResult responseeRR

50、Reeesssuuullltttneew ResponseResult(resultCode);return responseReesssuuulllttt;异常处理测试定义错误代码每个业务操作的异常使用异常代码去标识。package com.xuecheng.framework.cms.response;import com.xuecheng.framework.mimport lombok.ToString;.response.ResultCode;ToStringpublic enum CmsCode implements ResultCode CMS_ADDPAGE_EXISTS(fa

51、lse,24001,页面已存在!);/操作结果suc/操作代码code;/提示信息s;String message;private CmsCode(sucs;s,code, String message)thics = sucthis.code = code;this.message = message;Override publicreturn sucsucs() s;Overridepubliccode() return code;Overridepublic String message() return message; 异常处理测试1、抛出异常在controller、service、

52、都可以抛出异常。修改PageService的ad 方法 添加抛出异常的代码/校验页面是否I存d、在页,面根wCmsPage cmsPage1 =t名h查询、站点cmsPageReitory.ffiinnddBByy aaggeeNNaammeeAndSiteIdAndPageWth(cmsPage.getPageName(),cmsPage.getSiteId(), ccmmssPPaaggee.getPageWif(cmsPage1 !=null)th();/校验页面是否存在,已存在则抛出异常ExceptionCast.cast(CmsCode.CMS_ADDPAGE_EXISTS);2、启

53、动工程,扫描到异常捕获的类ExceptionCatch在springBoot的启动类中添加ComponentScan(basePackages=com.xuecheng.framework) 扫描mon工程下的类3、前端展示异常信息服务端响应信息如下:页面提取异常处理addSubmit() this.$refs.pageForm.validate(valid) = if (valid) this.$confirm(确认提交吗?, 提示, ).then() = cmsApi.page_add(this.pageForm).then(res) = console.log(res);if(recs)

54、this.$message(message: 提交成功,type: suc);sthis.$refspageForm.r setFields();else if(res.messageee) this.$message.eerrr r(r s message);elsethis.$message.error(提交失败););););5.4 不可预知异常处理定义异常捕获方法异常抛出测试使用tman测试添加页面,不输入cmst信息,提交,报错信息如下:.springframework.http.converter.HttpMessageNotReadableException此异常是springM

55、VC在进行参数转换的错误。具体的响应的信息为:timest: 1528712906727,sus: 400,error: Bad Request,exception: .springframework.http.converter.HttpMessageNotReadableException, message: Required request body is missing: publiccom.xuecheng.framework.cms.response.CmsPageResultcom.xuecheng.manage_cms.web.controller.CmsPageControl

56、ler.add(com.xuecheng.framework. msPage),path: /cms/page/add.cms.C上边的响应信息在客户端是无法的。在异常捕获类中添加对Exception异常的捕获:ExceptionHandler(Exception.class) ResponseBodypublic ResponseResult exception(Exception exception)/日志LOGGER.error(catch exception:,eexxcceeppttiioonn.ggeettM ssage();return null; 异常捕获方法针对上边其解决方案

57、是:ttpMes geN1o、t在aab中pmleE和配xc错置ep误tio代n码。2、在异常捕获类中对Excon异常进行捕获,并从map中获取异常类型对应的错误代码,如果存在错误代码则返回此错误,否则返回99999错误。具体的开发实现如下:1、在通用错误代码类CommCode中配置参数异常INVALID_PARAM(false,10003,参数!),2、在异常捕获类中配置 HttpMessageNotReadableException 为异常捕获类代码如下:参数异常。package com.xuecheng.framework.exception;importmon.collect.ImmutableMap;import com.xuecheng.framework.monCode; import com.xuecheng.framework.m.response.ResponseResult; import com.xuecheng.framework.m.response.ResultCode; import.slf4j.Logger;import.slf4j.Log

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论