2010-12-10 3 views
0

Мне было интересно, я что-то пропускаю, или валидатор hibernate не предлагает аннотации, чтобы проверить, что 2 поля равны (например, пароль). Я знаю, что могу написать свои собственные валидаторы, но это похоже на стандартную функциональность.hibernate validator: подтвердите соответствие двух полей

+0

Реализация: http://git.springsource.org/greenhouse/greenhouse/trees/master/src/main/java/com/springsource/greenhouse/validation – axtavt

ответ

0

Только что отправился на маршрут таможенного валидатора. Остальные 2 ответа здесь не связаны с вопросом. С небольшим количеством поисковых запросов я нашел пример fieldmatch.

-2

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

+0

Я использовал гибернации тег, потому что WASN» t тег hibernate-validator, и я пока не могу создавать новые. Конечно, я не защищаю поле подтверждения. – jack

-1

Hibernate - это ORM Mapper.

Используется для сохранения данных в БД и их экстрагирования. Таким образом, наличие двух полей с одинаковым значением не имеет большого смысла (с точки зрения стойкости). Это то, что вы должны проверить в своей бизнес-логике.

И я с Junesh ... Не сохраняйте свои пароли в восстанавливаемом формате ... Посмотрите на Hasing and Salting - Или еще лучше подумайте об openID, чтобы вам не пришлось беспокоить ваших клиентов еще одним глупым паролем. ..

+0

Я использовал тег hibernate, потому что не было тега hibernate-validator, и я пока не могу создавать новые. Конечно, я не защищаю поле подтверждения. – jack

3

Если вы используете Spring Framework, то вы можете использовать Spring Expression Language (SPEL) для этого. Я написал небольшую библиотеку, которая предоставляет проверщик 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; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^