Вопрос

Мне было интересно, я с видом на что-то упускаешь или делает валидатор 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, чтобы вам не нужно беспокоить ваших клиентов с еще одним глупым паролем ...

Я надеюсь, что вы не сохраняете пароль подтверждения в базе данных. У вас нет никаких вывесок ящиков для этого, но вместо этого вам придется использовать пользовательскую аннотацию, которая также довольно прямая.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top