博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java使用validator进行校验
阅读量:5165 次
发布时间:2019-06-13

本文共 4197 字,大约阅读时间需要 13 分钟。

不管是html页面表单提交的对象数据还是和第三方公司进行接口对接,都需要对接收到的数据进行校验(非空、长度、格式等等)。如果使用if一个个进行校验(字段非常多),这是让人崩溃的过程。幸好jdk或hibernate都提供了对object对象的校验,只需加上相应的注解即可。

1.项目建立

 pom.xml

[html] view plain copy
4.0.0
com.fei
validation-test
0.0.1-SNAPSHOT
javax.el
javax.el-api
2.2.4
org.hibernate
hibernate-validator
5.1.3.Final
2.基本校验练习StudentInfo.java[java] view plain copypackage com.fei.info; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.NotBlank; public class StudentInfo { @NotBlank(message="用户名不能为空") private String userName; @NotBlank(message="年龄不能为空") @Pattern(regexp="^[0-9]{1,2}$",message="年龄是整数") private String age; /** * 如果是空,则不校验,如果不为空,则校验 */ @Pattern(regexp="^[0-9]{4}-[0-9]{2}-[0-9]{2}$",message="出生日期格式不正确") private String birthday; @NotBlank(message="学校不能为空") private String school; public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } public String getBirthday() { return birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getSchool() { return school; } public void setSchool(String school) { this.school = school; } } ValidatorUtil.java[java] view plain copypackage com.fei.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; public class ValidatorUtil { private static Validator validator = Validation.buildDefaultValidatorFactory() .getValidator(); public static
Map
validate(T obj){ Map
errorMap = null; Set
> set = validator.validate(obj,Default.class); if(set != null && set.size() >0 ){ errorMap = new HashMap
(); String property = null; for(ConstraintViolation
cv : set){ //这里循环获取错误信息,可以自定义格式 property = cv.getPropertyPath().toString(); if(errorMap.get(property) != null){ errorMap.get(property).append("," + cv.getMessage()); }else{ StringBuffer sb = new StringBuffer(); sb.append(cv.getMessage()); errorMap.put(property, sb); } } } return errorMap; } } ValidatorTest.java[java] view plain copypackage com.fei; import java.util.Map; import com.fei.info.StudentInfo; import com.fei.util.ValidatorUtil; public class ValidatorTest { public static void main(String[] args) { StudentInfo s = new StudentInfo(); long startTime = System.currentTimeMillis(); print(ValidatorUtil.validate(s)); System.out.println("===============耗时(毫秒)=" + (System.currentTimeMillis() - startTime)); s.setUserName("小明"); s.setAge("a10"); s.setBirthday("2016-9-1"); startTime = System.currentTimeMillis(); print(ValidatorUtil.validate(s)); System.out.println("===============耗时(毫秒)=" + (System.currentTimeMillis() - startTime)); } private static void print(Map
errorMap){ if(errorMap != null){ for(Map.Entry
m : errorMap.entrySet()){ System.out.println(m.getKey() + ":" + m.getValue().toString()); } } } } 来看看运行结果:[plain] view plain copy十二月 12, 2016 4:02:00 下午 org.hibernate.validator.internal.util.Version
INFO: HV000001: Hibernate Validator 5.1.3.Final school:学校不能为空 age:年龄不能为空 userName:用户名不能为空 ===============耗时(毫秒)=280 birthday:出生日期格式不正确 school:学校不能为空 age:年龄是整数 ===============耗时(毫秒)=3

 

转载于:https://www.cnblogs.com/gxyandwmm/p/11217389.html

你可能感兴趣的文章
linux 修改ssh端口号
查看>>
Android-Layer list
查看>>
Java语言中的访问权限修饰符
查看>>
iOS9新特性之常见关键字
查看>>
codeforce好地方啊 Bear and Elections *
查看>>
破解wifi_失败
查看>>
20145332 《网络攻防》 逆向与Bof实验
查看>>
子元素设置margin-top,父元素无法将margin-top包含在父容器的原因及解决办法
查看>>
Centos服务器搭建(6)——安装JDK
查看>>
C语言_第二讲_规范以及常用数据类型
查看>>
RIP的缺点
查看>>
Unity最优化摘要
查看>>
类模板使用说明
查看>>
Redis源代码分析(一)--Redis结构解析
查看>>
Flex父子窗体相互调用
查看>>
改动网卡IP信息
查看>>
【Java】国内maven私服
查看>>
第三方开源水面波浪波形view:WaveView
查看>>
POJ 2251 Dungeon Master(3D迷宫 bfs)
查看>>
Linux查看和编辑文件
查看>>