SpringBoot参数验证
前言本文基于若依Ruoyi框架基于若依框架新建MyStudent 学生实体实现后端参数验证。一、需求说明对学生实体MyStudent的name学生姓名字段做后端参数校验学生名称不能为空学生名称长度不超过10 个字符验证失败抛出MethodArgumentNotValidException全局异常处理返回友好提示日志持久化二、后端代码实现1. 学生实体类MyStudent.java2. 学生控制器MyStudentController.java3. 全局异常处理器ExceptionHandler(MethodArgumentNotValidException.class) public Object validExceptionHandler(MethodArgumentNotValidException e) { log.error(e.getMessage(), e); String message e.getBindingResult().getFieldError().getDefaultMessage(); return AjaxResult.error(message); }三、参数验证触发流程前端 / 接口测试工具提交超长学生姓名如12345678901共 11 位Controller 方法上的Validated开启验证校验MyStudent.name发现长度超过 10抛出MethodArgumentNotValidException全局异常处理器捕获并返回提示信息前端展示错误提示后端控制台输出异常日志四、测试结果1. 测试场景 1学生名称为空返回提示学生名称不能为空2. 测试场景 2名称长度 1 个字符结果验证通过3. 测试场景 3名称长度 11 个字符返回提示学生名称长度不能超过10个字符4. 后端控制台日志14:46:34.654 [http-nio-8080-exec-14] WARN o.s.w.s.m.m.a.ExceptionHandlerExceptionResolver - [logException,208] - Resolved [org.springframework.web.bind.MethodArgumentNotValidException: Validation failed for argument [0] in public com.ruoyi.common.core.domain.AjaxResult com.ruoyi.system.controller.MyStudentController.edit(com.ruoyi.system.domain.MyStudent): [Field error in object myStudent on field name: rejected value [周住在新泽西州新泽西这小子新泽西州]; codes [Size.myStudent.name,Size.name,Size.java.lang.String,Size]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [myStudent.name,name]; arguments []; default message [name],10,0]; default message [学生名称长度不能超过10个字符]] ]