Spring 添加 Hibernate Validator支持 Add a provider like Hibernate Validator (RI) to your classpath

  1. 添加依赖
<dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>6.1.2.Final</version>
        </dependency>
<dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>2.0.1.Final</version>
        </dependency>
<dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator-annotation-processor</artifactId>
            <version>6.1.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator-cdi</artifactId>
            <version>6.1.2.Final</version>
        </dependency>
<dependency>
            <groupId>jakarta.validation</groupId>
            <artifactId>jakarta.validation-api</artifactId>
            <version>2.0.2</version>
        </dependency>
<dependency>
            <groupId>org.jboss.logging</groupId>
            <artifactId>jboss-logging</artifactId>
            <version>3.4.1.Final</version>
        </dependency>
<dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>jakarta.el</artifactId>
            <version>3.0.3</version>
        </dependency>
<dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>8.0.1</version>
            <scope>provided</scope>
        </dependency>

2. 向容器里注册一个处理器:

@Configuration
@EnableWebMvc
public class WebRootConfig {

    @Bean
    public MethodValidationPostProcessor methodValidationPostProcessor() {
        return new MethodValidationPostProcessor();
    }
}

3. 增加验证类

public class AppLoginParam {
    @NotNull(message = "userName不能为空")
    private String userName;
    @NotNull(message = "password不能为空")
    private String password;
    
    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

4. Controller增加验证

    @RequestMapping("/login")
    @ResponseBody
    public AjaxJson login(@Valid @RequestBody AppLoginParam requestParam, BindingResult bindingResult) {
        AjaxJson res = new AjaxJson();
        Integer code = response.getStatus();
        res.setCode(String.valueOf(code));
        res.setStatus(false);
        // validator 验证
        if (bindingResult.hasErrors()) {
            res.setMessage(bindingResult.getFieldError().getDefaultMessage());
            return res;
        }
// do something....
}

发表评论

邮箱地址不会被公开。 必填项已用*标注