用来做请求参数合法性校验
并且,将请求参数合法性校验放到Javabean的成员变量上
1️⃣导包
hibernate-validator
version 6(对应的是5版本的spring
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.6.Final</version>
</dependency>
2️⃣ 提供一个validator组件
<mvc:annotation-driven validator="validator"/>
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean">
<!--提供一个工厂类-->
<property name="providerClass" value="org.hibernate.validator.HibernateValidator"/>
</bean>
使用注解
第一步
首先在javabean中添加校验的注解
可以使用的注解有:

例如:
@Data
public class User {
@Length(min = 6,message = "长度最小为6")
String username;
@Length(min = 6,max = 8,message = "password length must between 6 and 8")
String password;
@Min(value = 18,message = "未成年人禁止进入")
@Max(value = 150,message = "活不了这么大吧")
Integer age;
}
message属性是当请求参数出现错误时报错信息的提示语,如果不写则会使用default message
第二步
通过注解@Valid或者注解@Validdate来声明该请求参数需要校验
如果想知道是哪一个Field成员变量出了问题,出了什么样的问题,则可以在形参中增加类别为BingingResult成员变量
- bindingResult.hasFieldErrors()可以判断请求参数是否有问题
- bindingResult.getFieldError()可以获得请求参数所对应的成员变量的错误
- fieldError.getField()可以获得有错误的成员变量名
- fieldError.getDefaultMessage()可以获得对应的message属性
例如:
//通过@Valid或@Validated注解,声明该请求参数需要增加校验
//bindingResult → 校验结果
@RequestMapping("login")
public BaseRespVo login(@Valid User user, BindingResult bindingResult) {
//请求参数是否全部都通过校验
if (bindingResult.hasFieldErrors()) {
//获得请求参数所对应的成员变量的错误
FieldError fieldError = bindingResult.getFieldError();
//有错误的成员变量名 → 请求参数名 → 哪一个请求参数有问题
String field = fieldError.getField();
String defaultMessage = fieldError.getDefaultMessage();
String message = field + "出问题了:" + defaultMessage;
return BaseRespVo.fail(message);
}
return BaseRespVo.ok();
}

本文介绍了如何在SpringMVC项目中结合Hibernate Validator进行请求参数的合法性校验,详细讲解了导包、创建validator组件及使用注解的步骤。通过在Javabean成员变量上添加校验注解,并利用@Valid或@Validated注解进行校验,同时展示了如何获取并处理校验错误信息。
1万+





