目录
一、前端触发参数校验异常
1、触发方式&前端现象
修改岗位名超过50个字符
1、后端现象
错误语句的基本信息
17:51:40.411 [http-nio-8080-exec-36] ERROR c.r.f.w.e.GlobalExceptionHandler - [handleMethodArgumentNotValidException,101] - Validation failed for argument [0] in public com.ruoyi.common.core.domain.AjaxResult com.ruoyi.web.controller.system.SysPostController.edit(com.ruoyi.system.domain.SysPost): [Field error in object 'sysPost' on field 'postName': rejected value [董事长ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss]; codes [Size.sysPost.postName,Size.postName,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [sysPost.postName,postName]; arguments []; default message [postName],50,0]; default message [岗位名称长度不能超过50个字符]]
二、源码分析
1、前端代码
岗位密码不能为空
2、后端代码
在后端中,如果两个限制都不满足,则触发异常处理机制,返回code:500给前端
异常处理方法:
3、流程分析
(1)将岗位名称的长度修改长度超过50个字符,确认后会请求URI:/system/post
(2)后端接受到SysRole的参数SysPost不符合条件,超过最大字符数,抛出异常类MethodArgumentNotValidExceptio
(3)异常被全局异常处理器捕获,返回message给前端,错误码为500
(4)前端路由截取到错误码500,显示出错误码为500的message内容
三:自定义异常
在ruoyi-framework目录下的pom.xml中引入验证validation依赖
<!-- 引入验证validation依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
自定义NotNumber校验器,实现ConstraintValidator接口
新增NotNumber注解,设置自定义校验器NotNumberValidator.class
在实体类中使用自定义的NotNumber注解
前端