RuoYi触发参数验证异常例子分析

目录

一、触发参数验证实例

1、触发方式:

2、前端现象:

3、后端现象:

二、源码分析

1、前端代码

2、后端代码

3、报错分析

三、自定义注解

1、参考官方文档进行学习:

2、实现

1、新增Xss注解,设置自定义校验器NoEnglishValidator.class

2、自定义NoEnglish校验器,实现ConstraintValidator接口。

3、实体类使用自定义的@NoEnglish注解

3、结果

1、前端

2、后端


一、触发参数验证实例

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注解

2、实现

1、新增Xss注解,设置自定义校验器NoEnglishValidator.class

2、自定义NoEnglish校验器,实现ConstraintValidator接口。

3、实体类使用自定义的@NoEnglish注解

3、结果

1、前端

2、后端

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值