11

この質問は、これと密接に関連しています(回答済み)。

プロジェクト全体を通して、JSF コマンド ボタンを使用して画面間を移動します。ここで、action 属性は、文字列を返す関数を指します。文字列は新しいスクリーンの名前です。

<h:commandButton value="Select" action="#{searchResultsBundledBean.selectFlight}">
</h:commandButton>

selectFlight文字列を返します。たとえばselected-flight-review、ユーザーをselected-flight-review.xhtml

モバイルの目的でpanelGrid、ajax 呼び出しを使用してクリック可能にする必要がありました。

<h:panelGrid>
    <f:ajax event="click" listener="#{searchResultsBundledBean.clickFlight(lowFareBundledSearchItem)}"/>
 </h:panelGrid

これは機能し、テストしましたが、正しい結果が返されました(返される直前にログに記録してテストされました)

ただし、リダイレクトは行われません。ajax 呼び出しはまだそれを行いません。別の画面にリダイレクトするにはどうすればよいですか? 変数を送信する必要はありません。新しい画面を表示するだけで済みます。ajax以外のものを使用する必要がありますか(使用したくない)、またはこれを現在のように機能させる方法はありますか?

4

2 に答える 2

23

バッキング Bean からの応答をリダイレクトできます。

public void clickFlight(Item lowFareBundledSearchItem) throws IOException {
    // ...
    FacesContext.getCurrentInstance().getExternalContext().redirect("selected-flight-review.xhtml");
    FacesContext.getCurrentInstance().responseComplete();
}
于 2013-09-03T10:19:13.680 に答える