У меня есть приложение JSF, в котором пользователи входят в форму входа, вводя свой адрес электронной почты и пароль. ManagedBean имеет следующие 2 метода.
Метод checkIdentity1()
возвращает URL-адрес ("", если проверка неверна, чтобы остаться на той же странице, или /useraccount.xhtml, если вставленные данные в порядке, чтобы перейти на следующую страницу).
Метод checkIdentity2()
возвращает логическое значение (false, если проверка неверна для отображения сообщения, true, если все в порядке).
логинManagedBean.java
public String checkIdentity1()
{
String strResponse="";
//check id
if(email.equals("[email protected]") && password.equals("1234"))
{
strResponse="/useraccount.xhtml?faces-redirect=true";
} else {
}
//
return strResponse;
}
public boolean checkIdentity2()
{
boolean bResponse=false;
//check id
if(email.equals("[email protected]") && password.equals("1234"))
{
//setpassIncorrecta(false);
} else {
bResponse=true;
}
//
return bResponse;
}
Что я пытаюсь сделать, так это смешать ajax и JSF, чтобы показать «Неверный адрес электронной почты и/или пароль», когда я нажимаю кнопку «Войти» и проверка не выполняется, и перехожу к account.xhtml, когда проверка в порядке. Но когда я ввожу неправильный адрес электронной почты и пароль, сообщение не отображается, и когда я вставляю их правильно, страница не перенаправляется на account.xhtml. Что я делаю неправильно?
Это мой фейслет
<h:form>
<!--Email-->
<h:inputText id="email" label="email" required="true" size="32" maxlength="32"
value="#{loginManagedBean.email}"
requiredMessage="Insert your email">
</h:inputText>
<h:message for="email" />
<!--Password-->
<h:inputSecret id="password" label="password" required="true" size="32" maxlength="40"
value="#{loginManagedBean.password}"
requiredMessage="Insert your password">
</h:inputSecret>
<h:message for="password" />
<!--Button-->
<h:commandButton value="Login" action="#{loginManagedBean.checkIdentity1()}">
<f:ajax execute="@form" render=":loginErrorMessage" />
</h:commandButton>
</h:form>
<h:panelGroup id="loginErrorMessage">
<h:outputText value="Email and/or password incorrect" rendered="#{!loginManagedBean.checkIdentity2()}" />
</h:panelGroup>
checkIdentity1
не будет выполняться, иcheckIdentity2
не вернет ожидаемый результат, как прямой результат предыдущего сбоя. - person kolossus   schedule 12.06.2015action
на командной кнопке не будет выполнено — это правило для JSF. Таким образом, ваша текущая логика не будет работать, потому что обработка вашего запроса не дойдет до выполнения методаcheckIdentity1
- person kolossus   schedule 14.06.2015