Java Web 学习(6) —— Spring MVC 之校验器
2024-09-01 05:51:31
Spring MVC 之校验器
数据验证
一个典型的 Spring MVC 应用会同时应用到 formatters/converters 和 validators。
在调用 controller 期间,将会有一个或多个 formatter,将字符串转化为 domain 对象的 field 值。格式化成功后,验证器就会介入,判断字段值是否为有效值或是否符合规则。
Converter
和Formatter
作用于字段级。而验证器作用于对象级。
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 定义最大小数部分 |
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
}
最新文章
- Android 网络通信API的选择和实现实例
- 从零开始学习Node.js例子零 永远的Hello World
- 怎样创建FTP服务器
- Hibernate开始上手总结
- UVa 12186 Another Crisis
- jsp无法支持el标签及jstl标签
- C#- 压缩和解压缩的研究 .
- Java并发实现一(并发的实现之Thread和Runnable的区别)
- Cocos2d学习之路五(Box2d使用CCPhysicsSprite时编译不通过解决方法)
- 加速Android Studio的Gradle构建速度
- CSS的position/float/display
- ubuntu下安装rubymine
- C# reportview 按时间改变行颜色
- webpack基础
- 微信公众号订阅号以及服务号通过网页授权获取用户openid方法
- web前端常见面试题
- 升讯威微信营销系统开发实践:(2)中控服务器的详细设计( 完整开源于 Github)
- httprequest存储的是字符内容 而文本内容是以字节形式上传的;所以普通的取值方式无法从httprequest取到值
- InnoDB存储引擎介绍-(6) 二. Innodb Antelope文件格式
- 【ContestHunter】【弱省胡策】【Round6】