目录
4.1 新增NotNumber注解,设置自定义校验器NotNumberValidator.class
4.2 自定义NotNumber校验器,实现ConstraintValidator接口。
1.触发验证实例简介
进入方式:岗位管理 -> 修改
2.触发验证抛出异常
2.1触发方式
岗位编码改为:ceo22222222222222222222222222222222222222222222222222222222222222222222222
2.2前端现象
有提示框显示,岗位编码不能超过64 个字符
2.3后端现象
3.源码分析
3.1前端代码
前端对输入框有限制,不能为空。
确定后,通过updateRole 函数对URI 为/system/role 发起HTTP PUT 操作,请求body 为data
从浏览器开发者工具可以看到,整体的HTTP 请求URL为 http://localhost/dev-api/system/post
后端返回信息后,前端的处理逻辑,返回code 为500 时,输出错误提示Message 框
3.2后端代码
Controller 代码如下
SysPost 类对属性PostCose 的限制如下
原因:当PostCose 不满足两个注解限制时,会抛出异常
异常处理如下
3.3报错分析
岗位编码修改报错,分析逻辑总结:
1.修改前端岗位名称长度超过64
2.点击确定与后台交互,请求URI:/system/post
3.后台检测到SysPost 的参数PostCode不符合要求,则抛出异常类型MethodArgumentNotValidException
4.异常被全局异常处理器捕获,返回message 给到前端,且错误码是500
5.前端路由截获错误码500 的信息,进行处理显示message 内容
4.自定义参数验证注解
使用原生的@Validated
进行参数校验时,都是特定的注解去校验(例如字段长度、大小、不为空等),我们也可以用自定义的注解去进行校验,例如项目中的@Xss
注解。
4.1 新增NotNumber注解,设置自定义校验器NotNumberValidator.class
4.2 自定义NotNumber校验器,实现ConstraintValidator
接口。
4.3实体类使用自定义的@NotNumber
注解
4.4前后端的测试
前端:
后端: