我第一次学习JSF。我创建了一个包含4个文件的小型Login项目: 1.User.java 2.Login.jsp 3.Loginfailed.jsp 4.faces-config.xml中 5.Sucess.jsp
如果用户名和密码匹配,我想导航到“Success.jsp”页面,如果没有,我想导航到“Loginfailed.jsp”。但我不知道如何检查以及放置它以及如何在“faces-config.xml”中设置导航器。
这是我的代码: User.java:
package test;
public class User {
private String name;
private String password;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String login(){
// Image here a database access to validate the users
if (name.equalsIgnoreCase("tester") && password.equalsIgnoreCase("tester")){
return "success";
} else {
return "failed";
}
}
}
的Login.jsp:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login</title>
</head>
<body>
<f:view>
<f:loadBundle basename="messages.messages" var="msg" />
<h:form>
<h:panelGrid columns="2">
<h:outputLabel value="#{msg.user}"></h:outputLabel>
<h:inputText value="#{user.name}">
</h:inputText>
<h:outputLabel value="#{msg.password}"></h:outputLabel>
<h:inputSecret value="#{user.password}">
</h:inputSecret>
</h:panelGrid>
<h:commandButton action="#{user.login}" value="#{msg.login}"></h:commandButton>
</h:form>
</f:view>
</body>
</html>
faces-config.xml中:
<faces-config>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>test.User</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
</faces-config>
答案 0 :(得分:1)
导航规则是奇怪的,我建议不要使用jsf 2.x的xml导航规则
返回的String from action方法指定将被重定向的页面。
public String myAction()
{
return "navigatedPage";
}
如果您想重定向确切的网址,可以使用以下代码剪切。
ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
ec.redirect("URL");
答案 1 :(得分:0)
我很抱歉打扰了所有的读者,但我找到了答案。万一其他人遇到同样的情况,这就解决了这个问题:
<navigation-rule>
<from-view-id>/pages/LoginView.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/pages/Trainer.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/pages/LoginView.jsp</from-view-id>
<navigation-case>
<from-outcome>failed</from-outcome>
<to-view-id>/pages/FailedLogin.jsp</to-view-id>
</navigation-case>
</navigation-rule>
这在faces-config.xml中实现了技巧