2013-04-02 3 views
0

У меня есть приложение JSF, и я использую @AssertTrue по методу isPasswordsEquals(), чтобы подтвердить совпадение пароля. Тем не менее, этот метод работает неправильно. Он добавляет сообщение об ошибке в контекст, но не вызывает никаких исключений, когда пароли не совпадают. Текущая транзакция завершается.В какой фазе jsf проверяется аннотация @AssertTrue?

Нужна ли мне эта функция или она называется неявно? Я добавил -ea для параметров запуска tomcat. Мне нужно добавить что-нибудь в web.xml для утверждения?

Я использую tomcat 7, myfaces 2.1.10, jvm 7 и eclipse ide. и у меня есть проверка api 1.0 и hibernate validator 4.3.1 в моем пути сборки.

+0

is rich: graphvalidate или f: validatebean требуется в поле зрения – daemonThread

+0

Связано: [Выполнение действия при возникновении ошибок проверки jsf] (http://stackoverflow.com/q/12859951/1288) –

ответ

0

Во-первых, утверждения Java не имеют ничего общего с проверкой Bean и ограничениями, такими как @AssertTrue. Это совершенно разные вещи. По этой причине использование опции -ea JVM ничего не сделает.

Я думаю, что isPasswordEquals не вычисляются, поскольку JSF на самом деле не проверки целых бобов, бушель только данное свойство через Validator # validateValue. Ваш метод не связан с конкретным свойством и, следовательно, не проверяется. Использует ли валидация для самих полей пароля? Например, вы можете добавить что-то вроде @NotNull или @NotEmpty им и валидация выдает исключение. Это покажет, что валидация выполняется для свойств.

Насколько я знаю, нет возможности использовать ограничения или ограничения уровня класса для значений non property с помощью JSF. Вам придется либо сделать запрос проверки самостоятельно, если вы используете JPA, используйте проверку на основе жизненного цикла для обратных вызовов менеджера объектов.

+0

спасибо за ответ на самом деле notnull и адрес электронной почты Подобные проверки не работают, за исключением того, что я использую rich: graphvalidator или f: validatebean (это никогда не срабатывает, проблема в версии jsf imp, которую я думаю) и что «ваш метод не связан с конкретным свойством». Мой метод: \t @AssertTrue (message = «Различные введенные пароли!») \t public boolean isPasswordsEquals() { \t \t return pass.equals (passcheck); \t \t} // pass and passcheck являются сущностными элементами – daemonThread

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