一、作业要求
- 按 PPT 方式触发新的参数验证异常
- 展示前后端代码、请求、响应、报错日志
- 完整复现 PPT 流程
-
实现思路:
为满足作业要求,在用户实体类
SysUser.java中,给用户昵称 nickName 新增参数校验规则:限制昵称最大长度为 10 个字符,同时设置非空校验。故意输入超过 10 位的昵称,触发MethodArgumentNotValidException参数校验异常,由全局异常处理器统一捕获并返回友好提示。
二、传统参数校验缺点
- 代码冗余:每个方法都要写
if判断 - 维护困难:修改规则要改所有地方
- 可读性差:业务与校验代码混合
三、本次实现功能
对 SysUser 的 nickName 做校验:
- 不能为空
- 长度不能超过 10
- 超过 10 位自动抛出异常
四、后端代码实现
1. 实体类 SysUser.java(添加校验注解)
新增修改:用户昵称长度不能超过10个字符(原来为30个)

2. Controller 层(开启校验)
位置:SysUserController.java


在新增 / 修改用户接口上,已有 @Validated 开启校验:
@Validated 放置位置: 在 Controller 方法的参数前,@RequestBody 注解的左侧。 作用:开启对当前实体类的参数验证。
3. 全局异常处理器(捕获验证异常)
位置:GlobalExceptionHandler.java

五、触发参数验证异常
1. 触发方式
- 前端:系统管理 → 用户管理 → 新增用户
前端:

已经成功触发了新的参数验证异常
浏览器网络请求的完整响应体:

控制台里直接显示了后端返回的错误信息:

IDEA 控制台里报错截图:
可以看到最下面有报错
ERROR c.r.f.w.e.GlobalExceptionHandler org.springframework.web.bind.MethodArgumentNotValidException default message [用户昵称长度不能超过10个字符]

&spm=1001.2101.3001.5002&articleId=160812727&d=1&t=3&u=2950227e21e748ec80a4438f013a28dd)
399

被折叠的 条评论
为什么被折叠?



