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

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

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

執筆者:掌田 津耶乃

ナビゲーション・ルールを作成する


では、実際に簡単なページ移動を行ってみましょう。ここでは「page1.jsp」と「page2.jsp」という2つのJSPファイルがあるものとして、page1.jspからpage2.jspへの移動を用意しましょう。

<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-rule>

まず、faces-config.xmlの<faces-config>タグ内に、このようにナビゲーション・ルールのタグを記述します。ここでは、「toPage2」という名前で、page1.jspからpage2.jspへの移動を登録していますね。これで、toPage2を呼び出せば、そのままpage2.jspへの移動が実行されるようになります。

JSPタグから直接ページ移動を呼び出す


では、このナビゲーション・ルールはどういうタイミングで呼び出せばいいのでしょうか。これは、一番簡単な呼び出し方としては、JSP側のタグのactionに指定する、という方法があります。

※page1.jsp内に記述
<f:view>

  <h:outputText value="JSF Page 1" id="text0"
    style="color: #0000AA; font-size: 18px; font-weight: bold" />
  <br /><br />
  <h:outputText value="これは、JSFによる表示です。" id="text1"
    binding="#{page1Bean.text1}" escape="false" />
  <h:form>
    <h:commandButton value="送信" action="toPage2" />
  </h:form>
  
</f:view>

ボタンをクリックすると、ナビゲーションルールをもとにページ移動が実行される。

ざっとこんな感じになるでしょう。<h:commandButton>タグを見ると、action="toPage2"と設定がされているのがわかります。actionに、このように<from-outcome>タグの値を記述してください。これで、ボタンをクリックすると、actionに指定しておいたナビゲーション・ルールが呼び出され、ページ移動を行うようになります。Javaのソースコードは一切書く必要がありません。

アクションからの呼び出し


では、Beanクラスの内部からナビゲーションを呼び出すにはどうすればよいか。これも実は簡単です。やってみましょう。まず、page1.jspに用意した<h:commandButton>タグのactionを、action="#{page1Bean.button1_action}"と修正しましょう。

そしてpage1Beanのクラス内に、以下のような形でbutton1_actionを用意します。これで先ほどと同じように、ボタンをクリックするとページ移動を行うようになるでしょう。

public String button1_action(){
  return "toPage2";
}

actionに関連付けをするメソッドは、返値にStringをreturnするようになっていました。この「返す値」がどういうものか、まだ説明していませんでしたね。これは、「ページ遷移に関する情報」を返すのです。これまでは、ページを移動する必要がありませんでしたから、return null;として何も返さないようにしていました。が、今はページ移動の情報がJSFの設定ファイルにありますから、これを呼び出すだけです。return "toPage2";とすれば、toPage2という名前のページ移動を実行します。Bean側で何らかの処理をしてからページ移動をするような場合は、こちらを使ったほうが便利ですね。
  • 前のページへ
  • 1
  • 2
  • 3
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

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