在看spring in actin第四版, 第五章5.4.2校验数据这节, 使用JSR303进行数据校验, 但是没有生效, 也没有报错
使用的是hibernate-validator的实现, gradle依赖:
compile group: 'org.hibernate', name: 'hibernate-validator', version: '6.0.9.Final'
javabean代码:
public class Spitter {
private Long id;
@NotNull
@Size(min = 5, max = 16)
private String username;
@NotNull
@Size(min = 5, max = 25)
private String password;
@NotNull
@Size(min = 2, max = 30)
private String firstName;
@NotNull
@Size(min = 2, max = 30)
private String lastName;
@NotNull
@Email
private String email;
// getter and setter
}
controller相关代码块:
@RequestMapping(value = "/register", method = RequestMethod.POST)
public String processRegistration(@Valid Spitter spitter, Errors errors) {
System.out.println(spitter);
if (errors.hasErrors()) {
errors.getAllErrors().forEach(System.out::println);
return "registerForm";
}
spitterRepository.save(spitter);
return "redirect:/spitter/" + spitter.getUsername();
}
我试了一下,在我这你的代码没有问题,参数有问题时可以进入到 if 块,比如当只传递 username 和 password 会给出如下输出: