Spring MVC JSR 303 数据效验

Spring数据校验

    Spring有自己的校验框架,同时也支持JSR 303 的校验,这里主要介绍Spring使用JSR 303的校验,Spring的校验框架主要方法org.springframework.vaildation包中。需要注意,Spring并没有提供JSR 303规范的实现,所以必须添加JSR303的实现者jar包(比如Hibernate Validator),Spring JSR 303 校验使用相当简单,只需要在需要验证的Bean中加入验证的注解,再在Sping MVC 方法入参时,在该Bean前面加上@Valid即可,例:

public Class user {
private String userId;

//使用正则表达式效验,匹配4~30个数字或字母或下划线的字符
@Pattern(regexp="w{4, 30}")
private String userName;

//长度在8~20之间
@Length(min=8, max=20)
private String passWord;

//时间必须是过去的时间
@Past
@DateTimeFormat(pattern="yyy-MM-dd")
private Date createDate;

//数据必须大于1000小于100000
@DecimalMin(value="1000.00")
@DeciamlMax(value="100000.00")
@NumberFormat(pattern="#,###.##")
private long salary;

}
Controller中:

@Controller
public class UserController {

@RequestMapping(value = "/user", method = RequestMethod.POST)
public String addUser(@Valid User user, BindingResult result) {
   ......
}

}
在Spring MVC将User对象绑定入参后会进行校验,结果会放在后面的BindingResult或者Errors对象中。

注意:BindingResult或者Errors必须紧跟在需要验证的Bean后面,如果其间有其他的入参会直接报异常

用于效验的Annotation:

@AssertTrue / @AssertFalse

验证适用字段:boolean

注解说明:验证值是否为true / false

属性说明:-

@DecimalMax / @DecimalMin

验证适用字段:BigDecimal,BigInteger,String,byte,short,int,long

注解说明:验证值是否小于或者等于指定的小数值,要注意小数存在精度问题

属性说明:公共

@Digits

验证适用字段:BigDecimal,BigInteger,String,byte,short,int,long

注解说明:验证值的数字构成是否合法

属性说明:integer:指定整数部分的数字的位数。fraction: 指定小数部分的数字的位数。

@Future / @Past

验证适用字段:Date,Calendar

注解说明:验证值是否在当前时间之后 / 之前

属性说明:公共

@Max / @Min

验证适用字段:BigDecimal,BigInteger,String,byte,short,int,long

注解说明:验证值是否小于或者等于指定的整数值

属性说明:公共

@NotNull / @Null

验证适用字段:引用数据类型

注解说明:验证值是否为非空 / 空

属性说明:公共

@Pattern

验证适用字段:String

注解说明:验证值是否配备正则表达式

属性说明:regexp:正则表达式flags: 指定Pattern.Flag 的数组,表示正则表达式的相关选项。

@Size

验证适用字段:String,Collection,Map,数组

注解说明:验证值是否满足长度要求

属性说明:max:指定最大长度,min:指定最小长度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值