时间:2021-05-20
在前后端分离的开发模式中,后端对前端传入的参数的校验成了必不可少的一个环节。但是在多参数的情况下,在controller层加上参数验证,会显得特别臃肿,并且会有许多的重复代码。这里可以引用Hibernate Validator来解决这个问题,直接在实体类进行参数校验,验证失败直接返回错误信息给前端,减少controller层的代码量。
一、xml引入Hibernate Validator
<!-- 验证器 --><dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.5.Final</version></dependency>二、通过注解在实体类进行参数校验
@Datapublic class UserModel { @NotNull(message = "用户名称不能为空!") private String userName; @NotNull(message = "age不能为null!") @Range(min = 1, max = 888, message = "范围为1至888") private Integer age; /** * 日期格式化转换 */ @NotNull(message = "日期不能为null!") private Date date;}这里用到的参数校验的注解有@NotNull和@Range,message是到时候我们返回给前端的信息,注解的具体意思如下:
三、controller层的方法加上@Valid注解
@PostMapping("/testPost")public Object testPost(@RequestBody @Valid UserModel userModel, BindingResult result){ if(result.hasErrors()){ for(ObjectError error:result.getAllErrors()){ return error.getDefaultMessage(); } } return userModel;}controller层这里只需要在实体类的前面加上@Valid注解,这个注解可以实现数据的验证。这里BindingResult是存储了校验时的错误信息,验证有误时将错误信息返回给前端。这里不使用BindingResult的时候,控制台会报MethodArgumentNotValidException,这里可以通过自定义异常类来捕捉它,然后去掉BindingResult,以及难看的if判断。
四、自定义异常类捕捉MethodArgumentNotValidException
@RestControllerAdvicepublic class GlobalExceptionAdvice { @ExceptionHandler(value = MethodArgumentNotValidException.class) public JsonData validException(MethodArgumentNotValidException e) { //验证post请求的参数合法性 MethodArgumentNotValidException notValidException = e; String msg = notValidException.getBindingResult().getFieldError().getDefaultMessage(); return JsonData.buildError(msg); }}使用PostMan的测试结果如下:
具体的代码可以在我的gitee上面 查看 ,springboot_validator
到此这篇关于SpringBoot整合Hibernate Validator实现参数验证功能的文章就介绍到这了,更多相关SpringBoot 参数验证 内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、参数校验springboot使用校验框架validation校验方法的入参SpringBoot的Web组件内部集成了hibernate-validator,
springboot2.3之后,hibernate-validator依赖缺失今天在写项目的时候,发现@Blank注解没有了,检查了一下,发现老版本spring
前言本文主要写的是:springboot下ueditor上传功能的实现及遇到的一些问题的处理整体项目结构展示Springboot整合ueditor及上传功能实现
推荐阅读:JQuery+Ajax+Struts2+Hibernate框架整合实现完整的登录注册在用户模块中的用户注册需求上,通常要进行用户名是否已被注册的验证,
springboot整合vue实现上传下载文件,供大家参考,具体内容如下环境springboot1.5.x完整代码下载:springboot整合vue实现上传下