JSR303常用注解
注解 | 说明 |
---|---|
@Null | 对象必须为null |
@NotNull | 对象必须不为null,无法检查长度为0的字符串 |
@NotBlank | 字符串必须不为Null,且去掉前后空格长度必须大于0 |
@AssertTrue | 对象必须为true |
@AssertFalse | 对象必须为false |
@Max(Value) | 必须为数字,且小于或等于Value |
@Min(Value) | 必须为数字,且大于或等于Value |
@DecimalMax(Value) | 必须为数字( BigDecimal ),且小于或等于Value。小数存在精度 |
@DecimalMin(Value) | 必须为数字( BigDecimal ),且大于或等于Value。小数存在精度 |
@Digits(integer,fraction) | 必须为数字( BigDecimal ),integer整数精度,fraction小数精度 |
@Size(min,max) | 对象(Array、Collection、Map、String)长度必须在给定范围 |
字符串必须是合法邮件地址 | |
@Past | Date和Calendar对象必须在当前时间之前 |
@Future | Date和Calendar对象必须在当前时间之后 |
@Pattern(value) | 其值必须符合指定的正则表达式 |
hibernate Validator扩展注解
Hibernate Validator是JSR3.0的一个扩展组件,除支持所有标准的效验注解外,它还支持以下扩展注解
注解 | 说明 |
---|---|
被修饰的元素必须是电子邮件 | |
@Length | 被修饰的元素长度必须在指定的范围内 |
@NotEmpty | 被修饰的元素必须非空 |
@Range | 被修饰的元素必须在合适的范围内 |
1.导入Hibernate-validatorjar包
2.添加xml配置信息
在springmvc.xml中配置
<mvc:annotation-driven />
3.在实体类上添加验证注解。
在需要验证的实体类上加上注解
public class User {
@NotEmpty(message = "不能为空")
private String name;
@NotEmpty(message = "不能为空")
private String pass;
}
3.在目标方法Bean类型的前面添加@Valid注解。
@RequestMapping(value = "/adduser",method = RequestMethod.POST)
public String addUser(@Valid User u,BindingResult result) {
//Errors接口提供了获取错误信息的方法,如getErrorCount()或 getFieldErrors(String field)
//BindingResult扩展了Errors接口。
System.out.println(result.getErrorCount());//查询未通过验证的数量
if(result.hasErrors()) {//判断是否有未验证的数据
System.out.println(result.getAllErrors());//查看所有未通过验证的数据,返回List
return "redirect:adduserget";
}
u.getClazz().setCname(cs.getClazz(u.getClazz().getId()).getCname());
us.addUser(u);
return "redirect:/list";
}
mvc:annotation-driven/会默认装配好一个LocalValidator FactoryBean,通过在处理方法的入参上标注@valid注解即可让SpringMVC完成数据绑定后执行数据效验工作。
在已经标注了JSR303注解的表单/命令对象前标注一个@Valid,SpringMVC框架在将请求参数绑定到该形参对象后,就会调用效验框架根据注解声明的校检规则进行校检。
SpringMVC是通过对处理方法签名的规定来保存效验结果的,前一个表单/命令对象的效验结果,保存到随后的入参中,这个保存了效验结果的入参必须是BindingResult或者Error类型,这两个类都位于org.springframework.validation包中。
BindingResult的常用方法
常用方法 | 说明 |
---|---|
FieldError getFieldError(String field) | 获取错误对象 |
List getFieldErrors() | 获取错误集合 |
Object getFieldValue(String field) | 获取单个错误的值 |
int getErrorCount() | 获取错误总数 |
在JSP页面上可通过<form:errors path=“username” />显示错误信息。
form:errors:显示表单组件或数据效验所对应的错误。
<form:errors path="" />:显示表单中所有的错误。
<form:errors path="user" />:显示所有以user为前缀的属性对应的错误。
<form:error path=“username” />:显示username表单元素的错误。