天天看点

【知识整理】SpringMVC-JSR 303数据校验

一.JSR 303数据校验

1.JSR 303是java为Bean数据合法性校验提供的标准框架,它已经包含在javaEE 6.0中.JSR 303通过在Bean属性上标注类似@Notnull\@Max等标准的注解指定校验规则,并通过标准的验证接口对Bean进行验证。

2.使用流程

(1)加入hiernate validator验证框架的jar包

(2)在SpringMVC配置文件中添加<mvc:annotation-driven></mvc:annotation-driven> 

(3)需要在bean的属性上添加对应的注解

例:

@NotEmpty(message="用户名不可为空") //校验username是否为空,如果为空,会报错“用户名不可为空”
private String username;
@Past(message="出生日期填写不正确") //校验birth是否为正确的出生日期格式(验证出生日期时间一定在当前时间之前)
@DateTimeFormat(pattern="yyyy-MM-dd") //按pattern属性所规定的格式对日期进行格式化
private Date birth;
           

(4)在目标方法bean类型的前面添加@validate注解,这里一个@Valid的参数后必须紧挨着一个BindingResult 参数,否则spring会在校验不通过时直接抛出异常

@Controller
public class TestDateTimeFormat {
	@RequestMapping("/testDateTimeFormat")
	public String dataTimeFormat(@Valid User user, BindingResult result){
		if(result.hasErrors()){
			List<ObjectError> errorList = result.getAllErrors();
			for(ObjectError error : errorList){
				System.out.println(error.getDefaultMessage());
			}
		}
		System.out.println(user);
		return "modelDataTest";
	}
}