Javad的Validator框架使用

来源:互联网 发布:零点网络电视 编辑:程序博客网 时间:2024/05/22 07:55

    结合hibernate-validator(除此之外Spring Framework自带的validation,struts validation等),说明Validator框架使用,引入jar包:

<dependency><groupId>org.glassfish</groupId><artifactId>javax.el</artifactId><version>3.0.0</version></dependency><dependency><groupId>org.hibernate</groupId><artifactId>hibernate-validator</artifactId><version>5.1.3.Final</version></dependency>
定义实体类:

Course:

package cn.slimsmart.java.demo.valid;import javax.validation.constraints.NotNull;public class Course {@NotNull(message="课程名不能为空")private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}
User:

package cn.slimsmart.java.demo.valid;import javax.validation.Valid;import javax.validation.constraints.Max;import javax.validation.constraints.Min;import javax.validation.constraints.NotNull;import javax.validation.constraints.Pattern;import javax.validation.constraints.Size;import org.hibernate.validator.constraints.Email;public class User {@NotNull(message="姓名不能为空")@Size(min=1,max=4,message="姓名长度介于1和4个字符")private String name;@NotNull(message="年龄不能为空")@Min(value=18,message="年龄不能小于18")@Max(value=70,message="年龄不能大于70")private int age;@Email(message="邮箱地址格式不正确")private String mail;@Pattern(regexp="[男女]",message="性别只能为男或女")private String sex;@Valid //标记course也做校验private Course course;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 getMail() {return mail;}public void setMail(String mail) {this.mail = mail;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public Course getCourse() {return course;}public void setCourse(Course course) {this.course = course;}}
注解说明:

Bean Validation 中内置的 constraint   
@Null   被注释的元素必须为 null   
@NotNull    被注释的元素必须不为 null   
@AssertTrue     被注释的元素必须为 true   
@AssertFalse    被注释的元素必须为 false   
@Min(value)     被注释的元素必须是一个数字,其值必须大于等于指定的最小值   
@Max(value)     被注释的元素必须是一个数字,其值必须小于等于指定的最大值   
@DecimalMin(value)  被注释的元素必须是一个数字,其值必须大于等于指定的最小值   
@DecimalMax(value)  被注释的元素必须是一个数字,其值必须小于等于指定的最大值   
@Size(max=, min=)   被注释的元素的大小必须在指定的范围内   
@Digits (integer, fraction)     被注释的元素必须是一个数字,其值必须在可接受的范围内   
@Past   被注释的元素必须是一个过去的日期   
@Future     被注释的元素必须是一个将来的日期   
@Pattern(regex=,flag=)  被注释的元素必须符合指定的正则表达式   
   
Hibernate Validator 附加的 constraint   
@NotBlank(message =)   验证字符串非null,且长度必须大于0   
@Email  被注释的元素必须是电子邮箱地址   
@Length(min=,max=)  被注释的字符串的大小必须在指定的范围内   
@NotEmpty   被注释的字符串的必须非空   
@Range(min=,max=,message=)  被注释的元素必须在合适的范围内

测试类:

package cn.slimsmart.java.demo.valid;import java.util.Set;import javax.validation.ConstraintViolation;import javax.validation.Validation;import javax.validation.Validator;import javax.validation.ValidatorFactory;public class ValidTest {public static void main(String[] args) {ValidatorFactory factory = Validation.buildDefaultValidatorFactory();Validator validator = factory.getValidator();User user = new User();user.setAge(12);user.setMail("abcdddd");user.setName("测试测试测试");user.setSex("A");user.setCourse(new Course());Set<ConstraintViolation<User>> constraintViolations = validator.validate(user);for (ConstraintViolation<User> constraintViolation : constraintViolations) {System.err.println(constraintViolation.getPropertyPath()+":"+constraintViolation.getMessage());}}}
运行输出:

course.name:课程名不能为空mail:邮箱地址格式不正确sex:性别只能为男或女name:姓名长度介于1和4个字符age:年龄不能小于18

0 0
原创粉丝点击