表单的数据检验对一个程序来讲非常重要,因为对于客户端的数据不能完全信任,常规的检验类型有:参数为空,根据不同的业务规定要求表单项是必填项参数值的有效性,比如产品的价格,一定不能是负数多个表单项组合检验,比如在注册时密码与确认密码必须相同参数值的数据范围,常见的是一些状态值,或者叫 ...
表单的数据检验对一个程序来讲非常重要,因为对于客户端的数据不能完全信任,常规的检验类型有:
- 参数为空,根据不同的业务规定要求表单项是必填项
- 参数值的有效性,比如产品的价格,一定不能是负数
- 多个表单项组合检验,比如在注册时密码与确认密码必须相同
- 参数值的数据范围,常见的是一些状态值,或者叫枚举值,如果传递的参数超出已经定义的枚举那么也是无意义的
上面的这些检验基本上都是纯数据方面的,还不算具体的业务数据检验,下面是一些强业务相关的数据检验
- 根据产品ID,去检验ID是否真实存在
- 注册用户时,需要检验用户名的唯一性
- ....
Hibernate validator,它是JSR-303的一种具体实现。它是基于注解形式的,我们看一下它原生支持的一些注解。
注解 | 说明 |
@Null | 只能为空,这个用途场景比较少 |
@NotNull | 不能为空,常用注解 |
@AssertFalse | 必须为false,类似于常量 |
@AssertTrue | 必须为true,类似于常量 |
@DecimalMax(value) | |
@DecimalMin(value) | |
@Digits(integer,fraction) | |
@Future | 代表是一个将来的时间 |
@Max(value) | 最大值,用于一个枚举值的数据范围控制 |
@Min(value) | 最小值,用于一个枚举值的数据范围控制 |
@Past | 代表是一个过期的时间 |
@Pattern(value) | 正则表达式,比如验证手机号,邮箱等,非常常用 |
@Size(max,min) | 限制字符长度必须在min到max之间 |
基础数据类型的使用示例
@NotNull(message = "基础数量不能为空") @Min(value = 0,message = "基础数量不合法") private Integer baseQty;
需要在
mvc的配置文件中增加如下节点以启动检验
<mvc:annotation-driven validator="validator"> <bean id="validator" class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"> <property name="providerClass" value="org.hibernate.validator.HibernateValidator"/> <property name="validationMessageSource" ref="messageSource"/> </bean> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="useCodeAsDefaultMessage" value="false"/> <property name="defaultEncoding" value="UTF-8"/> </bean>
原标题:用好spring mvc validator可以简化代码
关键词:Spring
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。