Я разработал простую форму входа для использования на моей странице JSF + PrimeFaces:
<form action="j_security_check" method="post">
<p:dialog modal="true" header="Login" widgetVar="loginDlg">
<h:panelGrid columns="3" cellpadding="5">
<h:outputLabel for="j_username">Username:</h:outputLabel>
<h:inputText id="j_username" required="true" />
<h:message for="j_username" />
<h:outputLabel for="j_password">Password:</h:outputLabel>
<h:inputSecret id="j_password" required="true" />
<h:message for="j_password" />
<br />
<h:commandButton value="Login" />
</h:panelGrid>
</p:dialog>
</form>
Пробовал с пустым паролем, но отсутствующий пароль (который требуется) не перехватывается компонентом h:message
. Я также переключился на p:commandButton
, думая, что проблема могла быть в поведении кнопки Ajax, но страница не отображается, потому что PrimeFaces жалуется на то, что CommandButton не находится внутри элемента формы. Исключение, выдаваемое контейнером:
com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Access denied on empty password for user pippo
Подводя итог, у меня 2 вопроса:
- Почему отсутствующий пароль не выводит сообщение перед отправкой формы?
- Как я могу поймать LoginException и отобразить сообщение об ошибке в диалоговом окне?
<h:messages />
, это должно перехватить все сообщения об ошибках на всей странице - person Petr Mensik   schedule 29.04.2012