JSF 中的导航
Posted
技术标签:
【中文标题】JSF 中的导航【英文标题】:Navigation in JSF 【发布时间】:2011-11-22 00:52:55 【问题描述】:早上好!我是新手。我有一个简单的 JSF 应用程序。但它没有按预期工作。 这是我的 login.xhtml:
<h:body>
<h:outputText value="Please enter your login and password"/>
<h:form id="loginForm">
<h:panelGrid columns="2">
<h:outputText value="User name"/>
<h:inputText value="#textBean.login" required="true"/>
<h:outputText value="Password"/>
<h:inputSecret value="#textBean.password" required="true"/>
<h:commandButton value="Submit" action="#textBean.doLogin"/>
</h:panelGrid>
</h:form>
</h:body>
这是我的error.xhtml:
<h:body>
<h:outputText value="You have entered incorrect data"/>
<h:form id="errorForm">
<h:commandLink value="Back to login page" action="#TextBean.backToLogin"/>
</h:form>
</h:body>
这是我的 bean 类 TextBean.java:
公共类TextBean实现可序列化
private static final long serialVersionUID = 1L;
private String login;
private String password;
public String getLogin()
return login;
public void setLogin(String login)
this.login = login;
public String getPassword()
return password;
public void setPassword(String password)
this.password = password;
public String doLogin()
if ("admin".equals(login) && "mypass".equals(password))
return "welcome";
else
return "error";
public String backToLogin()
return "login";
为什么错误页面没有回到登录页面?当您单击链接“返回登录页面”时,我得到了异常。我究竟做错了什么? 这是我的例外:
The server encountered an internal error () that prevented it from fulfilling this request.
javax.servlet.ServletException: javax.el.PropertyNotFoundException: /error.xhtml @14,80 action="#TextBean.doMyLogin": Target Unreachable, identifier 'TextBean' resolved to null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:521)
javax.faces.el.EvaluationException: javax.el.PropertyNotFoundException: /error.xhtml @14,80 action="#TextBean.doMyLogin": Target Unreachable, identifier 'TextBean' resolved to null
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:95)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:315)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
javax.el.PropertyNotFoundException: /error.xhtml @14,80 action="#TextBean.doMyLogin": Target Unreachable, identifier 'TextBean' resolved to null
com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:107)
javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
javax.faces.component.UICommand.broadcast(UICommand.java:315)
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
请帮帮我,亲爱的朋友们!任何帮助将不胜感激。
【问题讨论】:
抛开具体的问题,为什么不直接用<h:message>
的形式显示错误信息呢?应尽量避免对 POST 请求进行前向导航。你可以在这篇文章中找到一些指针:balusc.blogspot.com/2011/09/communication-in-jsf-20.html
@BalusC - 好文章:)
【参考方案1】:
您的 bean 的名称是 textBean
而不是 TextBean
。这就是JSF
无法解决的原因:identifier 'TextBean' resolved to null
【讨论】:
以上是关于JSF 中的导航的主要内容,如果未能解决你的问题,请参考以下文章