Spring MVC JSR-303验证框架之Hibernate-Validator
对于 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 关联,具体配置代码如下:
<!-- 配置消息属性文件 -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"><!-- 资源文件名 --><property name="basenames"><list><value>/WEB-INF/resource/errorMessages</value></list></property><!-- 资源文件编码格式 --><property name="fileEncodings" value="utf-8" /><!-- 对资源文件内容缓存的时间,单位为秒 --><property name="cacheSeconds" value="120" />
</bean>
<!-- 注册校验器 -->
<bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"><!-- hibernate 校验器 --><property name="providerClass" value="org.hibernate.validator.HibernateValidator" /><!-- 指定校验使用的资源文件,在文件中配置校验错误信息,如果不指定则默认使用 classpath下的 ValidationMessages.properties --><property name="validationMessageSource" ref="messageSource" />
</bean>
<!--开启 Spring的 Valid 功能 -->
<mvc:annotation-driven conversion-service="conversionService" validator="validator" />
3. 标注类型
JSR 303 不需要编写验证器,但需要利用它的标注类型在领域模型的属性上嵌入约束。
1)空检查
- @Null:验证对象是否为 null。
- @NotNull:验证对象是否不为 null,无法检查长度为 0 的字符串。
- @NotBlank:检查约束字符串是不是 null,以及被 trim 后的长度是否大于 0,只针对字符串,且会去掉前后空格。
- @NotEmpty:检查约束元素是否为 null 或者是 empty。
示例如下:
@NotBlank(message="{goods.gname.required}") //goods.gname.required为属性文件的错误代码
private String gname;
2)boolean 检查
- @AssertTrue:验证 boolean 属性是否为 true。
- @AssertFalse:验证 boolean 属性是否为 false。
示例如下:
@AssertTrue
private boolean isLogin;
3)长度检查
- @Size(min=,max=):验证对象(Array、Collection、Map、String)长度是否在给定的范围之内。
- @Length(min=,max=):验证字符串长度是否在给定的范围之内。
示例如下:
@Length(min=1,max=100)
private String gdescription;
4)日期检查
- @Past:验证 Date 和 Callendar 对象是否在当前时间之前。
- @Future:验证 Date 和 Calendar 对象是否在当前时间之后。
- @Pattern:验证 String 对象是否符合正则表达式的规则。
示例如下:
@Past(message="{gdate.invalid}")
private Date gdate;
5)数值检查
示例如下:
@Range(min=10,max=100,message="{gprice.invalid}")
private double gprice;
由于篇幅有限,大家可结合《Spring MVC Hibernate-Validator数据验证实例》教程学习。
Spring MVC JSR-303验证框架之Hibernate-Validator相关推荐
- Spring MVC-07循序渐进之验证器 下 (JSR 303验证)
概述 JSR 303 Validator Demo 测试 总结 源码 概述 JSR303"Bean Validation" 和 JSR349 "Bean Validati ...
- SSM框架笔记14:Spring MVC表单验证
Spring MVC表单验证 在Spring MVC中,表单验证有三种方法. 一.基本校验 这种方法是基于handler的,优点是定义方便,缺点是不便于复用. 1.两个接口:Errors/Bi ...
- JSR-303 Bean Validation 介绍及 Spring MVC 服务端验证最佳实践
任何时候,当要处理一个应用程序的业务逻辑,数据校验是你必须要考虑和面对的事情. 应用程序必须通过某种手段来确保输入参数在上下文来说是正确的. 分层的应用在很多时候,同样的数据验证逻辑会出现在不同的层, ...
- Spring MVC表单验证(带批注)
这篇文章提供了一个简单HTML表单验证示例. 它基于带有注释的Spring MVC示例. 该代码可在GitHub的Spring-MVC-Form-Validation目录中找到. 数据 在此示例中,我 ...
- jsr 303_使用Spring和JSR 303进行方法参数验证
jsr 303 Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法. 在这篇文章中,我们将看到如何使用此功能. 设定 首先,我们需要通过创建MethodValidation ...
- jsr303 spring_使用Spring和JSR 303进行方法参数验证
jsr303 spring Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法. 在这篇文章中,我们将看到如何使用此功能. 建立 首先,我们需要通过创建MethodVali ...
- 使用Spring和JSR 303进行方法参数验证
Spring提供了一种使用JSR 303 bean验证来验证方法参数的简便方法. 在这篇文章中,我们将看到如何使用此功能. 设定 首先,我们需要通过创建MethodValidationPostProc ...
- JSR 303 - Bean Validation与Hibernate Validation 介绍
一.介绍 在应用程序中,通过使用 Bean Validation 或是你自己定义的 constraint,例如 @NotNull, @Max, @ZipCode, 就可以确保数据模型(JavaBean ...
- Spring MVC中的验证组
可以通过groups属性将Bean验证中的验证约束添加到一个或多个组. 这使您可以限制在验证期间应用的约束集. 在某些小组应先于其他小组进行验证(例如在向导中)的情况下,这可能很方便. 从Spring ...
- mvc获取ajax上传base64文件,Spring MVC+ajax+base64+amazeui框架上传头像带裁剪功能
后台关键代码String filePath = null; String uuid = UUID.randomUUID().toString().replace("-", &quo ...
最新文章
- 9.spark core之共享变量
- Python将图像分割成小块然后将所有的块重新拼接在一起
- Kosaraju 算法检测有向图的强连通性
- 用 javascript 获取当页面上鼠标(光标)位置
- s时钟画布 android,Canvas画布实现自定义时钟效果
- [必看]首先要求做到的事情![sumtec]
- windbg 查看 PEG
- 区域生长影像分割算法
- 为flash游戏终极实用提速
- excel两列数据对比找不同_Excel | 如何核对两列/行数据,找不同?
- 【vue】浏览器播放提示音audio
- python计算1的平方减2的平方加3的平方减4的平方怎么算_墙体的面积怎么算的快?墙的平方快速计算方法...
- 值得借鉴:耗时两个月的求职经历
- 财务金额转换:小写金额转换成大写算法
- 气球java游戏_气球游戏-2019腾讯笔试
- 绘画教程:伤口疤痕应该怎么画?如何画出皮肤质感?
- Hive常见面试题汇总
- 模拟山羊收获日Android,模拟山羊收获日手机版
- win7删除Guest和administrator内置账户及账户所属文件
- android打开另外的app两种方式,内置到自己本身的app,重新打开app,
热门文章
- vmware vsphere powercli 因为在此系统中禁止执行脚本
- 压测学习总结(7)——Jmeter性能测试之脚本增强
- 支付业务与技术架构学习总结(6)——对账系统的设计
- Oracle学习总结(2)——Oracle数据库设计总结(三大范式)
- Myeclipse学习总结(16)——MyEclipse CI 2018.8.0首次更新,全新来袭!(内附破解激活文件,亲测破解100%)
- Spring MVC学习总结(8)——Swagger入门详解
- 淘宝的开源分布式文件系统TFS
- PHP学习总结(8)——PHP入门篇之WAMPServer集成环境安装和配置
- Java基础学习总结(41)——JPA常用注解
- python回车换行怎么不行_解决pycharm回车之后不能换行或不能缩进的问题