Spring MVC 之校验器

数据验证

一个典型的 Spring MVC 应用会同时应用到 formatters/converters 和 validators。

在调用 controller 期间,将会有一个或多个 formatter,将字符串转化为 domain 对象的 field 值。格式化成功后,验证器就会介入,判断字段值是否为有效值或是否符合规则。

ConverterFormatter作用于字段级。而验证器作用于对象级。

JSR 303

JSR(Java Specification Requests):Java 规范提案,是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。

JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是 Hibernate Validator,其他实现有 Apache BVal。

Hibernate Validator

属性 描述
@AssertFalse boolean 值必须为 false
@AssertTrue boolean 值必须为 true
@CreditCardNumber String 符合信用卡规范(不检验有效性)
@DecimalMax() BigDicimal,BigInteger,String,基本数值数据类型及包装器,小于等于指定小数
@DecimalMin() BigDicimal,BigInteger,String,基本数值数据类型及包装器,大于等于指定小数
@Digits(integer, fraction) integer 定义最大整数部分 fraction 定义最大小数部分
@Email String 符合email地址
@Future Date,Calendar,是未来的日期
@Length(min, max) String 长度符合范围
@Max() BigDicimal,BigInteger,String,基本数值数据类型及包装器,小于等于指定整数
@Min() BigDicimal,BigInteger,String,基本数值数据类型及包装器,大于等于指定整数
@NotBlank String非null且非空(忽略首尾空白字符)
@NotEmpty String,Collection,Map,Array非null且非空
@NotNull 不能为空
@Null 必须为空
@Past Date,Calendar,是过去的日期
@Pattern(regex, flag) String 与正则表达式匹配
@Range(min, max) BigDicimal,BigInteger,String,基本数值数据类型及包装器,在范围内
@Size(min, max) String,Collection,Map,Array长度在范围内
@ScriptAssert(lang, script, alias) 使用脚本验证
@URL(protocal, host, port) String 为有效URL
@Valid 递归校验

实例

@RequestMapping(value = "/valid")
@ResponseBody
public String userValidator (@Valid User user, Errors errors) {
if (errors.hasErrors()) {
return "error";
}
return user.toString();
}
public class User {
@NotNull
@Size(min = 1)
private String name; @NotNull
@Range(min = 18, max = 150)
private Integer age; // getters and setters
// toString
}

最新文章

  1. Android 网络通信API的选择和实现实例
  2. 从零开始学习Node.js例子零 永远的Hello World
  3. 怎样创建FTP服务器
  4. Hibernate开始上手总结
  5. UVa 12186 Another Crisis
  6. jsp无法支持el标签及jstl标签
  7. C#- 压缩和解压缩的研究 .
  8. Java并发实现一(并发的实现之Thread和Runnable的区别)
  9. Cocos2d学习之路五(Box2d使用CCPhysicsSprite时编译不通过解决方法)
  10. 加速Android Studio的Gradle构建速度
  11. CSS的position/float/display
  12. ubuntu下安装rubymine
  13. C# reportview 按时间改变行颜色
  14. webpack基础
  15. 微信公众号订阅号以及服务号通过网页授权获取用户openid方法
  16. web前端常见面试题
  17. 升讯威微信营销系统开发实践:(2)中控服务器的详细设计( 完整开源于 Github)
  18. httprequest存储的是字符内容 而文本内容是以字节形式上传的;所以普通的取值方式无法从httprequest取到值
  19. InnoDB存储引擎介绍-(6) 二. Innodb Antelope文件格式
  20. 【ContestHunter】【弱省胡策】【Round6】

热门文章

  1. 如何利用随机数产生验证码(java基础知识)
  2. R-4 方差分析
  3. java1.8 ConcurrentHashMap 详细理解
  4. CMKAE简单实用指南
  5. 【RTOS】基于V7开发板的RTX5和FreeRTOS带CMSIS-RTOS V2封装层的模板例程下载,AC6和AC5两个版本
  6. IT兄弟连 HTML5教程 CSS3揭秘 CSS3属性4
  7. Java replace() 方法 替换字符 也可用于 js 中
  8. go语言面向对象之方法
  9. Airtest 之 游戏自动化(5分钟教你王者农药刷金币)
  10. Java题库——Chapter2 基础程序设计