Java JSR303 valid
2019独角兽企业重金招聘Python工程师标准>>>
不管是html页面表单提交的对象数据还是和第三方公司进行接口对接,都需要对接收到的数据进行校验(非空、长度、格式等等)。如果使用if一个个进行校验(字段非常多),这是让人崩溃的过程。幸好jdk或hibernate都提供了对object对象的校验,只需加上相应的注解即可。
本人喜欢学习时,都建立个maven小项目进行实践学习。
- 首先引入包的管理
<dependency> <groupId>javax.el</groupId> <artifactId>javax.el-api</artifactId> <version>2.2.4</version> </dependency> <dependency><groupId>javax.validation</groupId><artifactId>validation-api</artifactId><version>1.1.0.Final</version></dependency><dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.2.Final</version> </dependency>
- 实现校验类并使用
package com.sk.browser.utils;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 高国藩 * @date 2017年4月25日 上午10:32:24*/ public class ValidatorUtil {private static Validator validator = Validation.buildDefaultValidatorFactory().getValidator();public static <T> Map<String, StringBuffer> validate(T obj) {Map<String, StringBuffer> errorMap = null;Set<ConstraintViolation<T>> set = validator.validate(obj, Default.class);if (set != null && set.size() > 0) {errorMap = new HashMap<String, StringBuffer>();String property = null;for (ConstraintViolation<T> 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;}}
- 自定义校验类
package com.sk.system.validator;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import javax.validation.Constraint; import javax.validation.Payload; /*** 定义valid管理器 * @author 高国藩 * @date 2017年4月25日 上午11:16:37*/ public class CustomValidation {/*** 定义金额校验* @author 高国藩* @date 2017年4月25日 上午11:06:01*/@Target({ElementType.FIELD, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy=MoneyValidator.class) public @interface Money { String message() default "金额格式不正确"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; } }
package com.sk.system.validator;import java.util.regex.Pattern;import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext;import com.sk.system.validator.CustomValidation.Money;public class MoneyValidator implements ConstraintValidator<Money, Double> {private String moneyReg = "^\\d+(\\.\\d{1,2})?$";//表示金额的正则表达式 private Pattern moneyPattern = Pattern.compile(moneyReg); @Overridepublic void initialize(Money arg0) {}@Overridepublic boolean isValid(Double arg0, ConstraintValidatorContext arg1) {if (arg0 == null) //金额是空的,返回true,是因为如果null,则会有@NotNull进行提示 //如果这里false的话,那金额是null,@Money中的message也会进行提示 //自己可以尝试 return true; return moneyPattern.matcher(arg0.toString()).matches(); }}
- 校验注解汇总
其中有一个要注意的就是@NotBlack,只针对String类型有用
另外一点就是javaConfig中的springMvc配置jsr303数据类型校验不起作用的原因,还未找到,请大家明白的及时联系我,感谢了 ~~~
转载于:https://my.oschina.net/gaoguofan/blog/886640
Java JSR303 valid相关推荐
- Spring 3 MVC and JSR303 @Valid example
http://www.mkyong.com/spring-mvc/spring-3-mvc-and-jsr303-valid-example/ ---------------------------- ...
- java JSR303 参数验证
JSR303是JAVA EE6中的子规范. 用于对Java Bean的字段值进行校验,确保输入进来的数据在语义上是正确的,使验证逻辑从业务代码中脱离出来. JSR303是运行时数据验证框架,验证之后验 ...
- java which valid identifier_JAVA程序员认证模拟题及分析(2)
JAVA程序员认证模拟题及分析(2) (2007-01-11 14:55:50) 26. Give following class: class AClass{ private long val; p ...
- java中如何判断一个String 是否可以强制转换成Integer
简述 项目中有时候需要判断一个String 的字符串能不能转换成 int,我在搜索引擎上搜索到时候发现有人问过同样的问题,但是回答者会有String 怎么能转换成Integer 的疑问,这里标注一下, ...
- java抓取工具_抓取工具Web-Harvest - dayang2001911 - JavaEye技术网站
Overview 总览 This section describes the motive, the notions and concepts used in Web-Harvest. 本章描述了在W ...
- Spring @SessionAttributes @ModelAttribute
2019独角兽企业重金招聘Python工程师标准>>> 最近在帮企业做微信企业号的项目,关于用户查询工资条这一块的问题.只要之前有一个人查询了工资,我再查询的时候老是可以查询到他的工 ...
- springboot整合spring Validated
spring Validated是基于java JSR303进一步封装,具有校验功能的框架,封装了原本的@Valid,但不同于@Valid的是他具有分组功能 依赖 <dependency> ...
- 【Spring】Spring Framework Reference Documentation中文版18
Part VI. The Web This part of the reference documentation covers Spring Framework's support for the ...
- 谷粒商城--认证中心--高级篇笔记八
谷粒商城–认证中心–高级篇笔记八 1. 环境搭建 1.1 新建模块gulimall-auth-server 1.2 pom文件 上面没选好直接复制下面的pom文件,记得排除gulimall-commo ...
最新文章
- 史上最大“云办公”实验开始,你参加了吗?
- Windows 编译cython nms
- C# 之不安全代码(2)
- 入门 | 一文看懂卷积神经网络
- CentOS7 安装 Mysql 服务
- JavaScriptDOM高级程序设计- generateDOM.js
- I2C driver编写常用接口
- 一个函数解决【LeetCode 买卖股票的最佳时机】系列所有题目!
- pthread_cond_signal只能唤醒已经处于pthread_cond_wait的线程
- 使用 webSocket 连接菜鸟打印(并获取当前电脑连接的打印机信息)
- 两种方法,word文件转换成PDF文件
- 陀螺仪、加速计、磁力计
- linux格式化u盘给win7,u盘一直显示格式化在虚拟机上安装win7系统怎么安装linux
- 使用Adb shell dumpsys检测Android的Activity任务栈
- 节后安全生产会议记要
- 计算机 黑屏 显示桌面,电脑开机后显示桌面黑屏了怎么处理啊?
- MT 101 Request for Transfer转账请求
- DPU网络开发SDK—DPDK(六)
- html左侧导航栏点击下拉菜单,HTML+CSS实现下拉菜单
- java 下载 1.7_JDK1.7免安装版