Java-HibernateValidation校验bean
2015-11-10 13:31
369 查看
本人菜B一个,所谓好笔头不如烂记性,但是我有一个好记性,所以还是拿个烂笔头记下来,方便以后使用
使用HibernateValidation之前,首先我们需要导入5个包,一个都不能少
也就是我从官网下载的压缩包下hibernate-validator-5.1.3.Final\dist\lib\required这个路径下的五个jar包,他们当时的版本分别是
classmate-1.0.0.jar
javax.el-2.2.4.jar
javax.el-api-2.2.4.jar
jboss-logging-3.1.3.GA.jar
validation-api-1.1.0.Final.jar
好了,之后我们就可以写测试了
使用HibernateValidation之前,首先我们需要导入5个包,一个都不能少
也就是我从官网下载的压缩包下hibernate-validator-5.1.3.Final\dist\lib\required这个路径下的五个jar包,他们当时的版本分别是
classmate-1.0.0.jar
javax.el-2.2.4.jar
javax.el-api-2.2.4.jar
jboss-logging-3.1.3.GA.jar
validation-api-1.1.0.Final.jar
好了,之后我们就可以写测试了
----------------------------User类-------------------------- //导入这个包 import javax.validation.constraints.NotNull; public class User { private String name; @NotNull(message = "姓名不能为空!") public String getName() {//get方法上面加标签,注意是GET return name; } public void setName(String name) { this.name = name; } } ----------------------------测试类-------------------------- public static void main(String[] aaa) { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); User person = new User(); Set<ConstraintViolation<User>> constraintViolations = validator.validate(person); System.out.println(constraintViolations.size()); System.out.println(constraintViolations); //要判断是否校验通过只需要判断constraintViolations.size()即可 } ------------------写到这里一个基本的验证就已经完成了,但是在实际开发当中,我们往往会遇到对同一个User类进行不同的操作,比如插入操作的时候,名称不能为空,但是修改的时候名称可以为空,这种情况我们需要如下改进----------------- 首先:要写两个接口 一个接口会告诉HibernateValidation我们是添加操作,Name必须不为空 另一个接口告诉HibernateValidation我们是修改操作,Name可以为空 public interface Add { //这个接口里边什么都不需要写,就这样即可 } public interface Edit { //这个接口里边什么都不需要写,就这样即可 } ---------------修改之后的User类------------------------------ public class User { private String name; //多出了一个groups的东西,说明下面我在Test类中,需要指定我的测试 //是什么操作,是Add还是Edit,如果是Add //HibernateValidation就会校验,否则,不会校验 @NotNull(message = "姓名不能为空!", groups = { Add.class }) public String getName() { return name; } public void setName(String name) { this.name = name; } } -------------------修改之后的测试类-------------------------- public static void main(String[] aaa) { User person = new User(); person.setName("AAS"); ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); //主要是这里发生了变化,这里告诉HibernateValidation是添加操作,还是修改操作 Set<ConstraintViolation<User>> constraintViolations = validator.validate(person, Edit.class); //constraintViolations.size()不等于0,说明不通过 System.out.println(constraintViolations.size()); for (ConstraintViolation<User> c : constraintViolations) { //打印信息 System.out.println(c.getMessage()); } }
相关文章推荐
- androidstudio 中关于识别不了jdk的问题
- ThreadLoacl源码解读
- JUNIT Test class in Eclipse - java.lang.ClassNotFoundException
- 【知识】java中判断两个字符串是否相等的问题
- Java上的try catch并不影响性能(转)
- springMVC @initBinder 使用
- java-jstack
- java设置客户端缓存控制:session保留时间
- spring整合hibernate和spring MVC
- eclipse的快捷键
- Spring如何获得容器对象
- java web 处理xml的方法
- jdk6版本下载地址
- MyEclipse中更改SVN密码
- No Hibernate Session bound to thread, and configuration does not allow creation
- mysql/Java服务端对emoji的支持
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- 第4条:通过私有构造器强化不可实例化的能力
- java截图工具的实现
- 【Spring】spring的自动装配(default-autowire="byName")