任何技能都是从模仿开始,逐步升华。

好的架构是进化而来的,好的产品是推广而来的。

Javad的Validator框架使用

    结合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
阅读更多
文章标签: Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭