【归纳总结】SpringMVC之Hibernate Validator

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

用来做请求参数合法性校验

并且,将请求参数合法性校验放到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();
    }
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值