在开发web的时候,我们会遇到这么几个用于验证(校验)的属性。
@Valid
,@Validated
, Validator
(感觉这几个字母都快被人凑齐其所有的形式了,名词,动词,形容词。。)
---------------
@Valid 登场
看看下面的依赖就知道,@Valid是JSR-303的javax.validation里的,Java的JSR303标准中定义了这类校验接口。然后hibernate-validator对其进行了实现。
题外话,@Validated是@Valid的一次封装,不是规范。
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.1.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.2.1.Final</version>
</dependency></span>
让下面我们写一个简单的测试案例
public class user{
@NotNull
@Length(min = 1,max = 5)
private String name;
@Size(min=1,max=5)
private int pasWord
}
下面是controller
@RequestMapping(value = "/create", method = RequestMethod.POST)
@ResponseBody
BlackDisck createUser(@ModelAttribute @Valid User user, BindingResult result) {
//我们需要把BindinngResult写在每个@valid的后面,
if (result.hasErrors()) {
List<ObjectError> errorList = result.getAllErrors();
for (ObjectError error : errorList) {
System.out.println(error.getCode()+"+ msg="+
error.getDefaultMessage());
}
return null;
}