Chinaunix首页 | 论坛 | 博客
  • 博客访问: 72779
  • 博文数量: 20
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 510
  • 用 户 组: 普通用户
  • 注册时间: 2014-01-10 16:21
文章分类
文章存档

2014年(20)

我的朋友

分类: 云计算

2014-02-20 11:17:21

 更多学习资料,请登录网站下载:

  JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,官方参考实现是Hibernate Validator。
  此实现与Hibernate ORM 没有任何关系。JSR 303 用于对Java Bean 中的字段的值进行验证。
  Spring MVC 3.x之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。

JSR 303内置的约束规则:

@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:指定最小长度。

@Valid

?验证适用字段:引用类型
?注解说明:验证值是否需要递归验证
?属性说明:无

  使用Spring MVC 和 JSR-303的标注做表单提交的服务器端验证时,需校验的表单/命令对象和其绑定结果对象或错误对象时成对出现的,它们之间不允许声明其他的入参: @Valid 标注的Command对象和BindingResult参数一定要紧挨着。要不然 数据绑定错误直接抛异常,不会封装成一个BindingResult对象。

  Errors 接口提供了获取错误信息的方法,如getErrorCount() 或getFieldErrors(String field)
  BindingResult扩展了 Errors 接口

@RequestMapping("/testJSR303")
public String testJSR303(@Valid User user5,Errors errors){
 //打印错误消息的数量
 System.out.println(errors.getErrorCount());
  
 //遍历错误消息
 if(errors.getErrorCount() > 0){
  ListfieldErrors = errors.getFieldErrors();
  for(FieldError error: fieldErrors){
   System.out.println(error.getDefaultMessage());
  }
 }
 
 return"success";
}

阅读(883) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~