我无法让它工作。我得到以下信息:
Unable to find matching navigation case with from-view-id '/login.xhtml' for action '#{admin.Validity}' with outcome 'failure'
这是我正在使用的代码:
HTML:
<div id="main" >
<h:form id="login_form">
<table>
<tr>
<td><h:outputText value="User: " /></td>
<td><h:inputText id="username"
value="#{admin.username}" /></td>
</tr>
<tr>
<td><h:outputText value="Password: " /></td>
<td><h:inputSecret id="password"
value="#{admin.password}" /></td>
</tr>
<tr>
<td></td>
<td><h:commandButton value="Login" type="submit"
action="#{admin.Validity}" /></td>
</tr>
</table>
</h:form>
</div>
管理程序
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean(name="admin")
@SessionScoped
public class Admin implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
Boolean authenticated;
String username;
String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String Validity() {
if(username.equals("admin") && password.equals("admin")) {
authenticated=true;
return "success";
} else {
authenticated=false;
return "failure";
}
}
}
人脸配置文件
<faces-config
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
version="2.0">
<navigation-rule>
<from-view-id>/login.xhtml</from-view-id>
<navigation-case>
<from-action>#{Admin.Validity}</from-action>
<from-outcome>success</from-outcome>
<to-view-id>/main.xhtml</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-action>#{Admin.Validity}</from-action>
<from-outcome>failure</from-outcome>
<to-view-id>/login.xhtml</to-view-id>
</navigation-case>
</navigation-rule>
</faces-config>
谢谢你。
是
最佳答案
您的托管 bean 名为 #{admin}
,
@ManagedBean(name="admin")
但是您试图以
#{Admin}
的身份访问它在导航案例中,<from-action>#{Admin.Validity}</from-action>
所以肯定行不通。 Java 区分大小写。
相应地修复导航案例中的托管 bean 名称:
<from-action>#{admin.Validity}</from-action>
无关 对于具体问题,您有几个小的设计错误。
@ManagedBean(name="admin")
可以用@ManagedBean
代替.@ManagedBean
@SessionScoped
public class Admin implements Serializable {
Validity()
来自 validity()
.此外,方法名称中还有语法/语言错误,但这可能是语言障碍。你通常会把它命名为 validate()
或者在这种情况下更好 authenticate()
或者其他的东西。 public String authenticate() {
if (username.equals("admin") && password.equals("admin")) {
authenticated=true;
return "main";
} else {
authenticated=false;
return "login";
}
}
这样你就可以删除整个
<navigation-rule>
完全阻止。 也可以看看:
关于jsf - 无法为操作 '/login.xhtml' 且结果为 '#{admin.Validity}' 的 from-view-id 'failure' 找到匹配的导航案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12158234/