1

在 face-configs.xml 中,

    <navigation-rule>
     <from-view-id>/login.jspx</from-view-id>
           <navigation-case>
        <from-outcome>failure</from-outcome>
        <to-view-id>/login.jspx?Error=InvalidUser</to-view-id>
        <redirect />
    </navigation-case>
      </navigation-rule>

当Login返回“失败”时,返回页面是login.jspx,而不是网站地址中的login.jspx?Error=InvalidUser。

我该如何解决?谢谢!

4

2 回答 2

0

JSP/JSPX 与 JSF 有很大不同。在使用 JSF2.x 版本时,最好建议使用 JSF 页面(.xhtml)进行 UI 开发。我建议您完全使用 JSF 或 JSP 来完成应用程序,而不是修复上述错误,不建议将两者合并并陷入兼容性问题。

同样在 JSF-2.x 版本中,我们不需要在 faces-config.xml 中定义导航规则,它们可以配置为网页或相应的托管 bean 本身

 <h:commandLink id = "submitBtn" value="New Page" action="#{bean.showPage}">
 </h:commandLink>

bean可以有一个方法

public String showPage(){
  return "\login.xhtml";
}

或者

<h:commandButton id="submitBtn" value="Submit" action="Response.jsp">
于 2012-06-27T05:27:21.340 回答
0

您需要在 中指定它们,<view-param><redirect>不是在<to-view-id>.

<navigation-case>
    <from-outcome>failure</from-outcome>
    <to-view-id>/login.jspx</to-view-id>
    <redirect>
        <view-param>
            <name>Error</name>
            <value>InvalidUser</value>
        </view-param>
    </redirect>
</navigation-case>

由于 JSF 2.0 新的隐式导航功能,可以完全摆脱导航案例。以上可以通过在action方法中返回以下字符串来替换。

public String login() {
    // ...

    if (failure) {
        return "/login.jspx?Error=InvalidUser&faces-redirect=true";
    }
}
于 2012-06-27T11:16:15.940 回答