Spring MVC JSR-303验证框架之Hibernate-Validator
创始人
2024-03-13 07:56:47
0

对于 JSR 303 验证,目前有两个实现,一个是 Hibernate Validator,一个是 Apache BVal。本教程采用的是 Hibernate Validator,注意它和 Hibernate 无关,只是使用它进行数据验证。

1. 下载与安装 Hibernate Validator

用户可以通过地址“https://sourceforge.net/projects/hibernate/files/hibernate-validator/”下载 Hibernate Validator,本教程选择的是 hibernate-validator-4.3.2.Final-dist.zip。

首先将下载的压缩包解压,然后将 \hibernate-validator-4.3.2.Final\dist 目录下的 hibernate-validator-4.3.2.Final.jar 和 \hibernate-validator-4.3.2.Final\dist\lib\required 目录下的 jboss-logging-3.1.0.Final.jar、validation-api-1.0.0. GA.jar 复制到应用的 \WEB-INF\lib 目录下。

2. 配置属性文件与验证器

如果将验证错误消息放在属性文件中,那么需要在配置文件中配置属性文件,并将属性文件与 Hibernate Validator 关联,具体配置代码如下:

  1. /WEB-INF/resource/errorMessages

3. 标注类型

JSR 303 不需要编写验证器,但需要利用它的标注类型在领域模型的属性上嵌入约束。

1)空检查

  • @Null:验证对象是否为 null。
  • @NotNull:验证对象是否不为 null,无法检查长度为 0 的字符串。
  • @NotBlank:检查约束字符串是不是 null,以及被 trim 后的长度是否大于 0,只针对字符串,且会去掉前后空格。
  • @NotEmpty:检查约束元素是否为 null 或者是 empty。

示例如下:

  1. @NotBlank(message="{goods.gname.required}") //goods.gname.required为属性文件的错误代码
  2. private String gname;

2)boolean 检查

  • @AssertTrue:验证 boolean 属性是否为 true。
  • @AssertFalse:验证 boolean 属性是否为 false。

示例如下:

  1. @AssertTrue
  2. private boolean isLogin;

3)长度检查

  • @Size(min=,max=):验证对象(Array、Collection、Map、String)长度是否在给定的范围之内。
  • @Length(min=,max=):验证字符串长度是否在给定的范围之内。

示例如下:

  1. @Length(min=1,max=100)
  2. private String gdescription;

4)日期检查

  • @Past:验证 Date 和 Callendar 对象是否在当前时间之前。
  • @Future:验证 Date 和 Calendar 对象是否在当前时间之后。
  • @Pattern:验证 String 对象是否符合正则表达式的规则。

示例如下:

  1. @Past(message="{gdate.invalid}")
  2. private Date gdate;

5)数值检查

名称说明
@Min验证 Number 和 String 对象是否大于指定的值
@Max验证 Number 和 String 对象是否小于指定的值
@DecimalMax被标注的值必须不大于约束中指定的最大值,这个约束的参数是一个通过 BigDecimal 定义的最大值的字符串表示,小数存在精度
@DecimalMin被标注的值必须不小于约束中指定的最小值,这个约束的参数是一个通过 BigDecimal 定义的最小值的字符串表示,小数存在精度
@Digits验证 Number 和 String 的构成是否合法
@Digits(integer=,fraction=)验证字符串是否符合指定格式的数字,integer 指定整数精度,fraction 指定小数精度
@Range(min=,max=)检查数字是否介于 min 和 max 之间
@Valid对关联对象进行校验,如果关联对象是个集合或者数组,那么对其中的元素进行校验,如果是一个 map,则对其中的值部分进行校验
@CreditCardNumber信用卡验证
@Email验证是否为邮件地址,如果为 null,不进行验证,通过验证

示例如下:

  1. @Range(min=10,max=100,message="{gprice.invalid}")
  2. private double gprice;

相关内容

热门资讯

闭幕词 闭幕词(通用10篇)  闭幕词,是会议的主要领导人代表会议举办单位,在会议闭幕时的讲话。其内容一般是...
班歌串词 班歌串词尊敬的领导、亲爱的同学们:大家上午好!(合)请全体起来,齐唱《美佛儿校歌》请坐!今天我们隆重...
幼儿园元旦活动主持词开场白   一、主持人开场白:  (亲爱的爸爸妈妈,小朋友们,大家新年好!因为您的孩子,我们走到了一起,形成...
生日主持主持词 精选生日主持主持词4篇  主持词要尽量增加文化内涵、寓教于乐,不断提高观众的文化知识和素养。在如今这...
开业庆典主持词 开业庆典主持词  什么是主持词?  主持词是主持人对各种晚会背诵已经准备好的稿子,或眼看提示器说出,...
新职工欢迎会主持词 新职工欢迎会主持词  主持词已成为各种演出活动和集会中不可或缺的一部分。在当下的中国社会,主持人的需...
颁奖晚会主持词 颁奖晚会主持词集合7篇  主持词可以采用和历史文化有关的表述方法去写作以提升活动的文化内涵。随着社会...
最新员工激励大会主持词 最新员工激励大会主持词  根据活动对象的不同,需要设置不同的主持词。在现今人们越来越重视活动氛围的社...
七十大寿主持词 精选七十大寿主持词3篇  主持词要把握好吸引观众、导入主题、创设情境等环节以吸引观众。在当今社会中,...
老年大学太极专业联欢会主持词 老年大学太极专业联欢会主持词  老年大学太极专业联欢会主持词    尊敬的校领导,尊敬的*老师,亲爱...
公司年会主持词、活动内容 公司年会主持词、活动内容女:歌声袅袅辞旧岁男:舞姿翩翩贺新春 尊敬的各位来宾女:亲爱的同事们合:大家...
女儿婚礼父亲致辞 女儿婚礼父亲致辞15篇  在学习、工作或生活中,大家都尝试过写致辞吧,致辞是指在仪式上所讲的表示勉励...
家长会主持词 关于家长会主持词(通用13篇)  主持词要尽量增加文化内涵、寓教于乐,不断提高观众的文化知识和素养。...
简单婚礼主持词流程 简单婚礼主持词流程  开场前提示:现场的各位领导、来宾朋友们婚礼盛典即将开始,在婚礼开始之前温馨提示...
《我和僵尸有个约会》经典台词 《我和僵尸有个约会》经典台词  很多人问我金正中为何找这么泼辣的女人做师父,我也不离开她呢?第一、因...
教师节活动的主持词 教师节活动的主持词(通用10篇)  主持词需要富有情感,充满热情,才能有效地吸引到观众。在当今社会生...
参加小主持人自我介绍   导语:“千练万练,千盼万盼”,终于我们学校小主持人要开始比赛了。下面小编为你整理的参加小主持人自...
最新婚礼誓言主持词 最新婚礼誓言主持词(通用7篇)  根据活动对象的不同,需要设置不同的主持词。在各种集会、活动不断增多...
爷爷70大寿宴会主持词 爷爷70大寿宴会主持词尊敬的各位佳宾,亲爱的各位朋友,女士们,先生们:  中午好!  亲爱的朋友们,...