jsr 正则验证_Java数据校验(Bean Validation / JSR303)
#简介
JSR303是JAVA EE6中的子规范。用于对Java Bean的字段值进行校验,确保输入进来的数据在语义上是正确的,使验证逻辑从业务代码中脱离出来。JSR303是运行时数据验证框架,验证之后验证的错误信息会马上返回。有两个版本JSR303(BeanValidation1.0)和JSR349(BeanValidation1.1)。
javax.validation:validation-api:jar:1.1.0.Final
实现版本:
org.hibernate:hibernate-validator
org.apache.bval:bval-jsr303
jersery
注解
@NotNull | 引用类型 | 注解元素必须非空
@Null | 引用类型 |元素为空
@Digits | byte,short,int,long及其包装器,BigDecimal,BigInteger,String| 验证数字是否合法。属性:integer(整数部分), fraction(小数部分)
@Future/@Past| java.util.Date, java.util.Calendar | 是否在当前时间之后或之前
@Max/@Min | byte,short,int,long及其包装器,BigDecimal,BigInteger | 验证值是否小于等于最大指定整数值或大于等于最小指定整数值
@Pattern | String |验证字符串是否匹配指定的正则表达式。属性:regexp(正则), flags(选项,Pattern.Flag值)
@Size | String, Collection, Map, 数组 | 验证元素大小是否在指定范围内。属性:max(最大长度), min(最小长度), message(提示,默认为{constraint.size})
@DecimalMax/@DecimalMin | byte,short,int,long及其包装器,BigDecimal,BigInteger,String | 验证值是否小于等于最大指定小数值或大于等于最小指定小数值
@Valid | |验证值是否需要递归调用
@Null
@NotNull
@AssertFalse
@AssertTrue
@DecimalMax(value) 不大于value的数值
@DecimalMin(value) 不小于value的数值
@Digits(integer,fraction) 整数部分不超过integer,小数部分不超过fraction
@Future 将来的日期
@Past 过去的日期
@Max(value) 不大于value的数值
@Min(value) 不小于value的数值
@Pattern(value) 满足指定正则表达式
@Size(max,min) 长度在min到max之间
实现
引入pom文件
javax.el
javax.el-api
2.2.4
org.hibernate
hibernate-validator
5.1.3.Final
基础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.constraints.NotNull;
import javax.validation.groups.Default;
import org.hibernate.validator.constraints.NotEmpty;
/**
* 参数校验
*/
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;
}
}
测试
public class MyBean {
@NotNull
private Long userId;
@NotEmpty
private String email;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
public static void main(String[] args) {
MyBean bean = new MyBean();
Map map = ValidatorUtil.validate(bean);
System.out.println(map);
}
jsr 正则验证_Java数据校验(Bean Validation / JSR303)相关推荐
- jsr 正则验证_JSR-303 数据校验学习
一.JSR-303简介 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator. 此实现与 Hibernat ...
- Java数据校验(Bean Validation / JSR303)
文档: http://beanvalidation.org/1.1/spec/ API : http://docs.jboss.org/hibernate/beanvalidation/spec/1. ...
- jsr 正则验证_使用 Bean Validation 解决业务中参数校验
痛点及现状 代码中常常见到如下代码: if (Objects.equal(0L ,repertory)){ return ApiResultMap.errorResult(-1 ,"操作数量 ...
- 如何使用JSR 303 进行后台数据校验?
文章目录 一.JSR 303 1.什么是 JSR 303? 2.为什么使用 JSR 303? 3.JSR 303 常见操作? 二.使用 JSR 303 相关注解处理逻辑 1.JSR 303 注解处理逻 ...
- jsr 正则验证_JSR303 验证
www.cqdyr.com JSR303 验证 JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation ,官方参 考实现是 Hibernate Validator ...
- java 数据验证_Java 数据验证
在web开发当前就会遇到一些数据有效性验证的相关代码编写. 一般的写法如: public class User { public String username; public String pass ...
- jsr 正则验证_使用JSR-303进行校验 @Valid
一.在SringMVC中使用 使用注解 1.准备校验时使用的JAR validation-api-1.0.0.GA.jar:JDK的接口: hibernate-validator-4.2.0.Fina ...
- java qq验证_JAVA正则表达式校验qq号码的方法
导读 正文 Java 正则表达式 正则表达式定义了字符串的模式. 正则表达式可以用来搜索.编辑或处理文本. 正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别. 正则表达式实例 一个字符串其 ...
- Bean Validation完结篇:你必须关注的边边角角(约束级联、自定义约束、自定义校验器、国际化失败消息...)【享学Spring】
每篇一句 没有任何技术方案会是一种银弹,任何东西都是有利弊的 前言 一般来说,对于web项目我们都有必要对请求参数进行校验,有的前端使用JavaScript校验,但是为了安全起见后端的校验都是必须的. ...
最新文章
- 千亿级携程酒店AWS实践
- 使用xmlhttp结合asp,实现网页的异步调用_asp实例
- python中for和while区别_Python学习第九篇——while和for的区别
- mysql proxy 悲观锁_mysql悲观锁总结和实践
- 最大数输出(信息学奥赛一本通-T1053)
- 编译Android源码致命错误解决方案
- java集群之间共享数据_多个JVM之间,数据共享的问题?
- 四叶草启动引导配置工具 !Clover Configurator中文版下载!
- 《松本行弘的程序世界》读书笔记
- 100offer 为专业程序打造的招聘平台
- 加速区块链改革促进区域经济转型升级 ——中国·平泉负氧离子产业园正式落成
- 广州智能服务机器人展览会 | 2016人工智能展
- 程序员常用资源工具集合
- 【SQL自学打卡|DAY17】——多表查询
- MATLAB2018simulink打不开MATLAB2019b的simulink,低版本simulink模型出现
- html3d电子相册,3d电子相册制作软件
- 电磁兼容EMC详解及测试流程
- python实现鱼眼图与六面图的转换
- java图片转二进制
- 模仿成功者,才是最快的成功路径
热门文章
- WorldWind Java 版学习:1、启动过程
- Redhat的Linux产品版本AS/ES/WS的联系与区别
- Linux使用技巧15则
- mysql查询流程解析及重要知识总结
- 网络爬虫--11.XPath和lxml
- 背景宽高随文本变化_中科大提出ContourNet:更准确的任意形状场景文本检测新方法...
- 基本农田卫星地图查询_#重庆朝天门#谷歌百度腾讯高德“卫星地图”PK,谷歌更胜一筹...
- 深度学习之 SSD(Single Shot MultiBox Detector)
- 【分享】 codeReview 的重要性
- mysql5.7.x 1251_MySql-8.0.x免安装版下载与配置,Navicat打开数据库链接报错1251的解决办法...