使用javax的NotBlan和Email注解,结果保类似错误
no validator could be found for constraint 'javax.validation.constraints.notblank'
原来是由于javax只提供了注解的定义,未提供对应的处理器,一般使用hibernate提供的注解处理器。
但是hibernate未提供NotBlank和Email注解的处理器(但是hibernate自己定义的NotBlank和Email注解是有处理器的)
所以在使用NotBlank或Email时,注意使用hibernate的注解,如下:
hibernate提供的注解处理器如下:
---------------------
作者:黔梦
来源:优快云
原文:https://blog.youkuaiyun.com/sky_ground/article/details/78674257
版权声明:本文为博主原创文章,转载请附上博文链接!
spring boot 1.4默认使用 hibernate validator 5.2.4 Final实现校验功能。hibernate validator 5.2.4 Final是JSR 349 Bean Validation 1.1的具体实现。
How to disable Hibernate validation in a Spring Boot project
As [M. Deinum] mentioned in a comment on my original post, the solution is to set:
spring.jpa.properties.javax.persistence.validation.mode=none
In the application.properties file.
Additionally, this behaviour is described here (its easy to miss because no example is provided).
http://stackoverflow.com/questions/26764532/how-to-disable-hibernate-validation-in-a-spring-boot-project
一 初步使用
hibernate vilidator主要使用注解的方式对bean进行校验,初步的例子如下所示:
package com.query; import javax.validation.constraints.Min; import org.hibernate.validator.constraints.NotBlank; public class Student { //在需要校验的字段上指定约束条件 @NotBlank private String name; @Min(3) private int age; @NotBlank private String classess; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getClassess() { return classess; } public void setClassess(String classess) { this.classess = classess; } }
然后在controller中可以这样调用,加上@Validated注解即可。
package com.controller;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.learn.validate.domain.Student;
@RestController
public class ValidateController {
@RequestMapping(value="testStudent")
public void testStudent(@Validated Student student) {
}
}