我在驗證表單時遇到了Thymeleaf問題。我試圖創建簡單的用戶註冊表單來學習Spring,並且我不幸陷入困境。Spring Boot + Thymeleaf - 表單驗證
這裏是我的窗體類
public class UserForm {
@NotEmpty
private String username;
@NotEmpty
private String password;
@NotEmpty
private String passwordConfirm;
...Getters and setters...
}
第一個問題是,當我在initBinder
@Autowired
private UserFormValidator formValidator;
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setValidator(formValidator);
}
「默認」 的@NotEmpty驗證註釋添加我的自定義驗證器類停止工作。這是被查出的行爲?
第二個問題是我怎樣才能顯示全球拒絕信息thymeleaf? 我的驗證器類是像下面從控制器
@PostMapping("/create")
public String registerUser(@ModelAttribute("form") @Valid final UserForm form, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return "newuser";
}
userService.saveUser(form);
return "redirect:/";
}
public class UserFormValidator implements Validator {
@Autowired
UserService userService;
@Override
public boolean supports(Class<?> clazz) {
return UserForm.class.isAssignableFrom(clazz);
}
@Override
public void validate(Object target, Errors errors) {
UserForm userForm = (UserForm) target;
if(!userForm.getPassword().equals(userForm.getPasswordConfirm())) {
errors.reject("passwords.no.match", "Passwords not match");
}
if(userService.findOneByUsername(userForm.getUsername()).isPresent()) {
errors.reject("user.exist", "User already exists (default)");
}
}
}
和後映射爲「默認」驗證錯誤,我可以通過使用前日表示:如果=「$ {#fields.hasErrors ('passwordConfirm')}「我不知道如何顯示錯誤信息passwords.no.match或檢查是否發生此錯誤?
非常感謝:) –