ページ 1 からページ 3 とページ 2 からページ 3 に移動しようとしています。ページ 3 で [戻る] ボタンをクリックすると、適切なページに移動する必要があります。
2 に答える
これは、前のページを格納するフィールドを持つ Bean を使用することで実現できます。次に、3 ページ目で、このフィールドの値を使用して適切なページに戻ることができます。たとえば、最初のページでは、firstPage として previousPage を設定しながら、3 番目のページに移動する commandLink が必要です。同様の commandLink も 2 ページ目の一部にする必要があります。post メソッドを使用してパラメーターを渡すため、h:commandLinks を h:forms で囲む必要があります。
<h:commandLink value="Third Page" action="#{navigationPageBean.updateLastVisitedPage("/firstPage.xhtml")}"/>
<h:commandLink value="Third Page" action="#{navigationPageBean.updateLastVisitedPage("/secondPage.xhtml")}"/>
@Named
public class NavigationPageBean implements Serializable
{
private String previousPage;
public String updateLastVisitedPage(String pageName)
{
previousPage = pageName;
return "/thirdpage.xhtml";
}
public String getPreviousPage()
{
return previousPage;
}
public void setPreviousPage(String previousPage)
{
this.previousPage = previousPage;
}
}
JavaScriptメソッドを使用して前のページも学習することでこれを達成できると思いますが、正確な方法はわかりません。
それを実現したい場合は、URL ベースのナビゲーションを実装する必要があります。1 から 3 に移動する<h:button>
には、結果属性を使用して を実装できます。
<h:button value="Go to third" outcome="/thirdpage.xhtml" />
ナビゲーション ルールを指定して実行することもできます。ただし、これを行うためのチュートリアルが多数あります。
http://www.mkyong.com/jsf2/jsf-2-button-and-commandbutton-example/
http://www.mkyong.com/jsf2/implicit-navigation-in-jsf-2-0/
どこから来たのかを知るにはさまざまな方法がありますが、ビュー パラメーターを使用するのが正しい方法だと思います。ボタンまたはリンクで を指定する<f:param name="ComingFrom" value="#{sourceBean.id}" />
と、宛先ページでそのように受け取ることができます<f:viewParam id="ComingFrom" name="ComingFrom"
value="#{destinationBean._ParamSourceId}" />
。
そうすれば、リクエストを介してパラメーターを渡し、戻るボタンを作成して、URL または他の URL を指すことができます。
そこにはもっとたくさんのものがあります。
https://blogs.oracle.com/rlubke/entry/jsf_2_0_bookmarability_view