0

登録用のページが 2 つあります。1 つはユーザー データをリクエスト スコープの Bean に取得し、次の 1 つは収集したデータを表示します。2 番目のページには、ユーザーをログインにリダイレクトするためのボタンがあります。

register.xhtml のボタン アクションを次に示します。regUser.register の結果は、ユーザー データを表示する 2 番目のページの名前である reg_success です。

        <p>
            <h:commandButton value="#{msgs.regButtonText}" action="#{regUser.register}"/>
        </p>

reg_success.xhtml には、ボタン用の次のコードがあります。

        <p>
            <h:commandButton value="#{msgs.regToLogin}" action="login"/>
        </p>

ログイン ページの名前は login.xhtml です。

このナビゲーション ルールを faces-config.xml に挿入しても、転送は行われません。実際、register.xhtml からユーザーが転送され、2 ページ目の URL は変更されません。

<navigation-rule>
        <from-view-id>/reg_success.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>login</from-outcome>
        <to-view-id>/login.xhtml</to-view-id>
        <redirect/>
    </navigation-case>
</navigation-rule>
4

1 に答える 1

2

は の<h:commandButton>内部にある場合にのみ機能し<h:form>ます。commandButton/commandLink/ajax action/listener method not invoked or input value not updatedの最初のポイントも参照してください。

しかし、この特定のケースでは、POST リクエストは必要ないようです。あとは使うだけ<h:button>。これにより、 を必要としない GET リクエストが作成されます<h:form>

<h:button value="#{msgs.regToLogin}" outcome="login" />
于 2012-06-07T19:26:48.457 に答える