У меня есть приложение JSF 2, и я не могу заставить работу проверять @Email на атрибут ManagedBean JSF.@Email hibernate аннотации проверки не работает в JSF 2 Bean
Это мой стек:
- Glassfish 3.1.1
- Mojarra 2.2.9/JSF 2,2
Я проверил в моем веб-Inf/класс У меня есть эти библиотеки а порекомендован here:
- javax.validation: проверки-API: баночка: 1.0.0.GA
- org.hibernate: гибернации-валидатор: баночка: 4.3.2.Final
Мой код:
<h:body>
<!-- <h:log id="log" /> -->
<h:messages globalOnly="true" style="color:red;margin:8px;" />
<h:form id="form">
<f:validateBean>
<h:outputLabel for="email" value="Enter your email: " />
<h:inputText id="email" value="#{userEditBean.email}" />
<h:message for="email" />
<h:commandButton type="submit" value="Enviar"
action="#{userEditBean.submit()}" />
</f:validateBean>
</h:form>
Управляемая боб:
import javax.enterprise.context.SessionScoped;
import javax.faces.bean.ManagedBean;
import javax.validation.constraints.Pattern;
@ManagedBean
@SessionScoped
public class UserEditBean {
private static final String CURRENT_PAGE = "";
private static final String USER_LIST_PAGE = "userList";
//@Pattern(regexp = "[a-zA-Z0-9][email protected][a-zA-Z0-9]+\\.[a-zA-Z0-9]+", message = "Email format is invalid.")
@Email(message = "Email format is invalid.")
private String email;
public String submit() {
return CURRENT_PAGE;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
Примечания:
- Стандартные проверки JSR 303 (@Null, @NotNull, ...) работают отлично, я могу выполнить проверку электронной почты с помощью @Pattern, как показано here, но я хочу знать, почему другие аннотации проверки гибернации не работают.
- Hibernate validator отлично работает, если я пытаюсь вставить модель с недопустимым адресом электронной почты в свойство, аннотированное с помощью @Email, hibernate выдает исключение в предварительной проверке.
- Я пробовал аннотировать поле или геттер, как упоминалось here, ни один из них не работал.
- Я прошел через hibernate validator reference integration chapter, но он просто говорит, что вы должны использовать тег для принудительной проверки.
Можно ли использовать дополнительные аннотации из валидатора спящего режима в компоненте JSF или только javax.validation.constraints. * Стандартные? (without using validator programmatically)
ОБНОВЛЕНО: 2015-03-23: в ответ на BalusC ответ:
Glassfish 3.1.1 поставляется с Hibernate-валидатор расслоением и это та же версия, я использую, я могу видеть это в журнале запуска сервера:
2015-03-23T14:11:24.772+0100|Información: Inicializando Mojarra 2.2.9 (-SNAPSHOT 20141218-0939 https://svn.java.net/svn/mojarra~svn/tags/[email protected]) para el contexto '/fwk4jsf'
2015-03-23T14:11:25.368+0100|Información: HV000001: Hibernate Validator 4.3.2.Final
И у меня также есть делегат = «истинный» в моем GlassFish-web.xml, но он не работает.
спасибо.
Это не сработало, у стеклянной рыбы такая же версия валидатора спящего режима, что и у меня в приложении. Я отредактировал вопрос. – kothvandir
Почему вы поставляете его по webapp? – BalusC
Хорошая точка !, У меня это было, потому что мне нужно, чтобы тесты работали, и я хотел быть уверенным, что это стандарт проверки на спящий режим и не модифицирован разработчиками Glassfish. Установив зависимость от предоставляемой, решена проблема, и теперь валидации работают. Спасибо!. – kothvandir