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 が「failure」を返した場合、返されるページは login.jspx ですが、Web サイト アドレスの login.jspx?Error=InvalidUser ではありません。

どうすれば修正できますか?ありがとう!

4

2 に答える 2

0

JSP/JSPX は JSF とは大きく異なります。JSF2.x バージョンを使用する場合は、UI 開発に JSF ページ (.xhtml) を使用することをお勧めします。上記のエラーを修正する代わりに、JSF または JSP を完全に使用してアプリケーションを実行することをお勧めします。両方をマージして互換性の問題に陥ることはお勧めできません。

また、JSF-2.x バージョンでは、faces-config.xml でナビゲーション ルールを定義する必要はありません。ナビゲーション ルールは、Web ページまたはそれぞれのマネージド 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 の新しい暗黙的なナビゲーション機能により、ナビゲーション ケースを完全に取り除くことができます。上記は、アクション メソッドで次の文字列を返すことで置き換えることができます。

public String login() {
    // ...

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