javax.validation使用最佳实践
2017-12-04 11:57
344 查看
之前讲过validation结合spring用法,其中包含注解的含义,这次就不一一说明,链接地址:javax.validation结合spring最佳实践,
今天说一说validation的另一种用法,这种用法更加简单便捷
校验工具类:
校验工具类返回的数据ValidationResult(省略getset):
Person类(省略getset):
使用方法:
是不是很简单呀,几步搞定,根本不用spring便可封装一个好用的工具类
今天说一说validation的另一种用法,这种用法更加简单便捷
校验工具类:
package com.alibaba.banff.web.util; import java.util.HashMap; import java.util.Map; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.groups.Default; /** * 校验工具类 * * @author lizhilong */ public class ValidationUtils { private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); public static <T> ValidationResult validateEntity(T obj) { ValidationResult result = new ValidationResult(); Set<ConstraintViolation<T>> set = validator.validate(obj, Default.class); // if( CollectionUtils.isNotEmpty(set) ){ if (set != null && set.size() != 0) { result.setHasErrors(true); Map<String, String> errorMsg = new HashMap<String, String>(); for (ConstraintViolation<T> cv : set) { errorMsg.put(cv.getPropertyPath().toString(), cv.getMessage()); } result.setErrorMsg(errorMsg); } return result; } public static <T> ValidationResult validateProperty(T obj, String propertyName) { ValidationResult result = new ValidationResult(); Set<ConstraintViolation<T>> set = validator.validateProperty(obj, propertyName, Default.class); if (set != null && set.size() != 0) { result.setHasErrors(true); Map<String, String> errorMsg = new HashMap<String, String>(); for (ConstraintViolation<T> cv : set) { errorMsg.put(propertyName, cv.getMessage()); } result.setErrorMsg(errorMsg); } return result; } }
校验工具类返回的数据ValidationResult(省略getset):
package com.aliyun.prophet.facade.partner.flaw; import java.util.Map; /** * 校验结果 * * @author lizhilong */ public class ValidationResult { // 校验结果是否有错 private boolean hasErrors; // 校验错误信息 private Map<String, String> errorMsg; }
Person类(省略getset):
package com.aliyun.prophet.facade.partner.flaw; import org.hibernate.validator.constraints.Length; import org.hibernate.validator.constraints.NotEmpty; import org.hibernate.validator.constraints.Range; public class Person { @Length(max=20,message="姓名长度不能大于20") @NotEmpty(message="姓名不能为空") private String name; @Range(min = 0, max = 1, message = "性别只能输入只能输入0或1") private Integer gender; private Integer age; }
使用方法:
/** * * @author: lizhilong */ public class Test { @org.junit.Test public void testValidation(){ Person person = new Person(); person.setAge(12); person.setGender(2); // person.setName("李智龙"); ValidationResult result = ValidationUtils.validateEntity(person); Map<String, String> map = result.getErrorMsg(); boolean isError = result.isHasErrors(); System.out.println("isError: " +isError); System.out.println(map); } }打印结果:
isError: true {gender=性别只能输入只能输入0或1, name=姓名不能为空}
是不是很简单呀,几步搞定,根本不用spring便可封装一个好用的工具类
相关文章推荐
- javax.validation结合spring最佳实践
- MySQL性能优化的21个最佳实践 和 mysql使用索引(转)
- Java设计和使用异常的最佳实践
- 使用Hyper-V Server最佳实践分析仪(BPA)
- Atitit 数据库view视图使用推荐规范与最佳实践与方法
- 使用 JET 在 Eclipse 中创建更多更好的代码,如何掌握专家的最佳实践并提高您的模型驱动开发进度
- MySQL性能优化的21个最佳实践 和 mysql使用索引
- Git 在团队中的最佳实践--如何正确使用Git Flow
- BA使用Mingle的最佳实践
- dubbo使用最佳实践
- JSP 最佳实践: 使用JSTL来更新JSP页面 ------标准化JSTL标记为您的Web页面带来更多的功能
- SAP BPC最佳实践-在BPC NW中何时使用Write back BADI
- Android最佳性能实践(二)——分析内存的使用情况
- mysql:21个性能优化最佳实践之5[在Join表的时候使用相当类型的列,并将其索引]
- paip.spring3 mvc servlet的配置以及使用最佳实践
- Android 布局最佳实践 之 使用自己的 ToolBar
- Git 在团队中的最佳实践--如何正确使用Git Flow
- 精通MVC3摘译(5)-使用URL模式最佳实践
- Android最佳性能实践(二)——分析内存的使用情况
- Django 1.6 最佳实践: 如何正确使用 User Model