Я изучаю Spring Framework и Thymeleaf.Я знал, как отобразить ошибку поля, используя что-то вроде ${#fields.errors("xx")}
.Тем не менее, я застрял о том, как отобразить сообщение об ошибке объекта в Thymeleaf.
Вот мой UserForm класс:
@PasswordMatches
public class UserForm {
@NotNull
@NotEmpty
private String username;
@NotNull
@NotEmpty
private String password;
@NotNull
@NotEmpty
private String matchingPassword;
@NotNull
@NotEmpty
@ValidEmail
private String email;
/* setter and getter methods */
Вот мой PasswordMatches аннотация:
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Constraint(validatedBy = PasswordMatchesValidator.class)
@Documented
public @interface PasswordMatches {
String message() default "Passwords don't match";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
}
class PasswordMatchesValidator implements ConstraintValidator<PasswordMatches, Object> {
@Override
public void initialize(PasswordMatches constraintAnnotation) {
}
@Override
public boolean isValid(Object obj, ConstraintValidatorContext context){
UserDto user = (UserDto) obj;
return user.getPassword().equals(user.getMatchingPassword());
}
}
Вот мой Контроллер метод:
@RequestMapping(value="/registration", method=RequestMethod.POST)
public ModelAndView registerUserAccount(@ModelAttribute("user") @Valid UserForm userForm,
BindingResult result, WebRequest request, Errors errors) {
if (!result.hasErrors()) {
return new ModelAndView("registerSuccess");
}
else {
return new ModelAndView("registration", "user", userForm);
}
}
Теперь вот моя проблема: Если пароль *Поле 1021 * и поле verifyPass не совпадают. Как получить сообщение об ошибке по умолчанию, возвращаемое аннотацией уровня класса в Thymeleaf?