Javaプログラミング/Javaプログラミング関連情報

ナビゲーションとページ移動(3ページ目)

JSFでは「ナビゲーション」と呼ばれる機能を使い、簡単にページ移動を行えます。この機能を中心に、ページ移動の方法について説明をしましょう。

執筆者:掌田 津耶乃

ダイナミックに移動先を決めるには?


では、移動先をその場で決めてページ移動させるような場合には、どうすればよいのでしょうか。これは、あらかじめ複数の移動先をナビゲーション・ルールとして登録しておき、アクションのメソッドで、必要に応じて異なるStringをreturnするようにしておけばよいのです。やってみましょう。

<navigation-rule>
  <display-name>page1</display-name>
  <from-view-id>/page1.jsp</from-view-id>
  <navigation-case>
    <from-outcome>toPage2</from-outcome>
    <to-view-id>/page2.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
    <from-outcome>toPage3</from-outcome>
    <to-view-id>/page3.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
    <from-outcome>toReturn</from-outcome>
    <to-view-id>/page1.jsp</to-view-id>
  </navigation-case>
</navigation-rule>

まず、複数の移動先を用意します。ここでは、page1.jsp、page2.jsp、page3.jspに移動するための設定を、"toReturn"、"toPage2"、"toPage3"といった名前で用意しておきました。

では、これを選択するためのポップアップメニューをJSP側に用意しましょう。このポップアップメニューから選んだ移動先に移動するようにしよう、というわけです。

<h:form>
  <h:selectOneMenu binding="#{page1Bean.select1}">
    <f:selectItem itemLabel="ページ2へ" itemValue="toPage2" />
    <f:selectItem itemLabel="ページ3へ" itemValue="toPage3" />
    <f:selectItem itemLabel="このページへ" itemValue="toReturn" />
  </h:selectOneMenu>
  <h:commandButton value="送信" action="#{page1Bean.button1_action}" />
</h:form>

こうして、ボタンをクリックしたときに実行されるアクション用メソッドで、メニューの値をreturnするように変更します。

public String button1_action(){
  return (String)select1.getValue();
}

これでできました。page1.jsfにアクセスし、ポップアップメニューから項目を選んでボタンを押すと、選択したページに移動するようになります。button1_actionでreturnするStringを変えるだけで、移動先を自由に変更できることがわかりますね。

ポップアップメニューで、自由に移動先が選べる。

ページの移動は、設定の書き方を覚えるのが少々面倒ですが、これさえわかれば、JSPからでもBeanからでも自由に移動が行えるようになります。JSFの基本機能の一つとして、ここでしっかり理解しておきましょう。
【編集部おすすめの購入サイト】
Amazonで Java 関連の書籍をチェック!楽天市場で Java 関連の書籍をチェック!
  • 前のページへ
  • 1
  • 2
  • 3
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます