Я использую Spring Data JPA для моделирования и проверки своих данных. В этом случае у меня есть класс, который имеет поле пароля и подтверждения:
Код: Выделить всё
public class RegistrationForm {
private String password;
private String confirm;
// ...
}
и теперь я хочу проверить, совпадают ли они оба. Я понял, что могу создать для него метод, используя @AssertTrue:
Код: Выделить всё
@AssertTrue(message = "Passwords don't match")
private boolean isPasswordMatch() {
return password.equals(confirm);
}
Теперь в моем контроллере я проверяю этот класс, и этот метод работает нормально. Моя проблема сейчас в том, что я не могу понять, как отобразить эту ошибку в моем шаблоне Thymeleaf. Обычно я использовал это для полей с проверкой:
Но с методами это не работает. Теперь я немного поисследовал и обнаружил, что если я назову метод примерно так: isXXX, то он поместит поле в экземпляр Errors с именем XXX. В данном случае это будет поле с именемpasswordMatch. Я мог бы проверить это с помощью отладчика.

Это не работает, хотя эта ошибка поля существует как ViolationFieldError, как и любая другая ошибка. Для справки я попробовал это:
Я просто получаю сообщение о том, что свойство недоступно для чтения:
Код: Выделить всё
Caused by: org.springframework.beans.NotReadablePropertyException: Invalid property 'passwordMatch' of bean class [me.squidxtv.tacocloud.model.RegistrationForm]:
Bean property 'passwordMatch' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?
Примечание. В настоящее время я просматриваю шестое издание «Весна в действии», и это встречается в главе 5 «Защита Spring», но мой вопрос не имеет к этому отношения, потому что сама книга не реализует проверку для этого класса.
Подробнее здесь:
https://stackoverflow.com/questions/785 ... -thymeleaf