フォームの検証時にThymeleafに問題があります。私はSpringを学ぶために単純なユーザー登録フォームを作成しようとしています。残念ながら、私は残念です。Spring Boot + Thymeleafフォーム検証
はここ
public class UserForm {
@NotEmpty
private String username;
@NotEmpty
private String password;
@NotEmpty
private String passwordConfirm;
...Getters and setters...
}
まず問題は、私は@NotEmpty検証によって注釈を付けinitBinder
@Autowired
private UserFormValidator formValidator;
@InitBinder
public void initBinder(WebDataBinder binder) {
binder.setValidator(formValidator);
}
"デフォルト" で私のカスタムバリデータクラスを追加するときに動作を停止している私のユーザーフォームクラスです。これは例外的な行動ですか?
第2の問題は、どのようにしてthymeleafでグローバル拒否メッセージを表示できますか? 私のバリデータクラスは
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)");
}
}
}
以下のようなもので、コントローラから、私は元番目を使用して表示することができ、「デフォルト」の検証エラーとして
@PostMapping("/create")
public String registerUser(@ModelAttribute("form") @Valid final UserForm form, BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return "newuser";
}
userService.saveUser(form);
return "redirect:/";
}
をマッピングを投稿:= "$ {#1 fields.hasErrors場合( 'passwordConfirm')} "エラーpasswords.no.matchのメッセージを表示するか、このエラーが発生していないかどうかを確認できませんか?
ありがとうございました。 –