目录
1、新增Xss注解,设置自定义校验器NoEnglishValidator.class
2、自定义NoEnglish校验器,实现ConstraintValidator接口。
一、触发参数验证实例
1、触发方式:
进入通知公告,添加公告:在公告标题中输入多个放假啦。
2、前端现象:
3、后端现象:
可以在\home\ruoyi\logs中找到对应的log日志。我的是在D:\home\ruoyi\logs
日志的存放路径:
IDEA 的Run Tab 输出含如下Log:
1.ERROR 关键字:有捕获异常Exception
2.谁捕获了异常?GlobalExceptionHandler
3.哪里抛出的异常?com.ruoyi.web.controller.system.SysNoticeController.add(com.ruoyi.system.domain.SysNotice)
4.具体谁抛出了什么异常?[Field error in object 'sysNotice' on field 'noticeTitle': rejected value
5.抛出的异常类型?MethodArgumentNotValidException
二、源码分析
1、前端代码
前端只是限制了输入内容不能为空。
进入道rules
查看确定按钮:
进入submitForm
进入addNotice
从浏览器开发者工具可以看到,整体的HTTP 请求URL 为http://localhost/dev-api/system/notice
后端返回信息后,前端的处理逻辑,返回code 为500 时,输出错误提示Message 框
2、后端代码
Controller代码:
3、报错分析
1.添加前端公告名称长度超过50。
2.点击确定与后台交互,请求URI:/system/notice
3.后台检测到SysRole 的参数SysNotice不符合要求,则抛出异常类型MethodArgumentNotValidException
4.异常被全局异常处理器捕获,返回message 给到前端,且错误码是500
5.前端路由截获错误码500 的信息,进行处理显示message 内容
三、自定义注解
自定义[参数验证的]注解,触发验证抛出异常报错。
1、参考官方文档进行学习:
链接:后台手册 | RuoYi
可以看到自定义参数验证的具体步骤如下:
1、新增Xss
注解,设置自定义校验器XssValidator.class
2、自定义Xss
校验器,实现ConstraintValidator
接口。
3、实体类使用自定义的@Xss
注解