1.因爲是在maven項目下,需要引入如下三個包
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.3.5.Final</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.3.1.Final</version>
</dependency>
2.springmvc的配置文件中,只需要寫一句話
<mvc:annotation-driven/>
不需要再添加了。
3.Pojo中添加一些註解,比如@Past所選時間不能是將來的。
@Past
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date becomeStudent;
@NotNull
private String username;
4.在控制層裏的方法裏要對加以判斷的方法參數前面加上@Valid,而且方法裏一定要有Error對象,那麼它的子集BindingResult也是可以的:
@RequestMapping(value = "/add.do",method = RequestMethod.POST)
public String add(@Valid Student student, BindingResult result,Model model, ModelMap modelMap){
if(result.getErrorCount()>0){
for(FieldError error : result.getFieldErrors()){
log.info(error.getField()+" "+error.getDefaultMessage() );
}
}
model.addAttribute(student);
modelMap.put("stu",student);
log.info(student.toString());
return "listStudent";
}
一定要寫在@Valid後面,有幾個待驗證的參就出現幾次BindResult.
JSR303的驗證類型:
@Null 被註釋的元素必須爲 null
@NotNull 被註釋的元素必須不爲 null
@AssertTrue 被註釋的元素必須爲 true
@AssertFalse 被註釋的元素必須爲 false
@Min(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@Max(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@DecimalMin(value) 被註釋的元素必須是一個數字,其值必須大於等於指定的最小值
@DecimalMax(value) 被註釋的元素必須是一個數字,其值必須小於等於指定的最大值
@Size(max, min) 被註釋的元素的大小必須在指定的範圍內
@Digits (integer, fraction) 被註釋的元素必須是一個數字,其值必須在可接受的範圍內
@Past 被註釋的元素必須是一個過去的日期
@Future 被註釋的元素必須是一個將來的日期
@Pattern(value) 被註釋的元素必須符合指定的正則表達式
//-----------------下面是hibernate-valitor新增加的
@Email 被註釋的元素必須是電子郵箱地址
@Length 被註釋的字符串的大小必須在指定的範圍內
@NotEmpty 被註釋的字符串的必須非空
@Range 被註釋的元素必須在合適的範圍內