Hibernate Validator: Validate 2 поля Match
-
25-09-2019 - |
Вопрос
Мне было интересно, я с видом на что-то упускаешь или делает валидатор Hibernate без аннотации, чтобы убедиться, что 2 поля равны (такие как пароль). Я знаю, что я могу написать свои собственные валидаторы, но хорошо это кажется стандартной функциональностью.
Решение 3
Просто пошел на пользовательский маршрут валидатора. Другие 2 ответа здесь не совсем связаны с вопросом. С небольшим количеством гугула я нашел пример поля.
Другие советы
Если вы используете Sprack Framework, вы можете использовать язык выражения пружины (SPEL) для этого. Я написал небольшую библиотеку, которая предоставляет Validator JSR-303 на основе SPEL, который делает проверки кросс-поля очень простым. Взгляни на https://github.com/jirutka/validator-spring..
Это подтвердит равенство полей паролей, когда хотя бы один из них не пуст.
@SpELAssert(value = "password.equals(passwordVerify)",
applyIf = "password || passwordVerify",
message = "{validator.passwords_not_same}")
public class User {
private String password;
private String passwordVerify;
}
Хорошо выложенный пример, который обращается к аналогичной проблеме, т. Е. Валидацию по перекрестным полем:
Проверка поперечного поля с помощью Hibernate Validator (JSR 303)
Hibernate - Mapper ORM.
Он используется для сохранения данных в БД и извлечь его снова. Таким образом, имеющие 2 поля с одинаковым значением, не имеют большого смысла (с точки зрения постоянства). Это то, что вы должны проверить в вашей бизнес-логике.
И я с Junesh ... не упорствуйте свои пароли в извлеченном формате ... Посмотрите на усаживание и засорение - или даже лучше, подумайте об OpenID, чтобы вам не нужно беспокоить ваших клиентов с еще одним глупым паролем ...
Я надеюсь, что вы не сохраняете пароль подтверждения в базе данных. У вас нет никаких вывесок ящиков для этого, но вместо этого вам придется использовать пользовательскую аннотацию, которая также довольно прямая.