JavaServer Faces ユーザーズガイド
目次 前ページ次ページ

第3章 JavaServer Facesアプリケーションの開発

3.6 画面遷移定義の作成

画面遷移定義はJavaServer Faces定義ファイル(faces-config.xml)にnavigation-ruleタグを利用して定義します。

[JavaServer Faces定義ファイル(faces-config.xml)の例]

<faces-config>
  ...
  <navigation-rule>
    <!-- 遷移元のJSP名を記述 -->
    <from-view-id>/input.jsp</from-view-id>
    
    <!-- アクションの結果によって遷移先を変更 -->
    <navigation-case>
      <!-- アクションの結果がsuccessの場合に/result.jspに遷移することを指定 -->
      <from-outcome>success</from-outcome>
      <to-view-id>/result.jsp</to-view-id>
    </navigation-case>
    
    <navigation-case>
      <!-- アクションの結果がfailの場合に/input.jspに遷移することを指定 -->
      <from-outcome>fail</from-outcome>
      <to-view-id>/input.jsp</to-view-id>
    </navigation-case>
  </navigation-rule>
  ...
</faces-config>

ここで、JavaServer Faces定義ファイル(faces-config.xml)に記載する「アクションの結果」とは、ボタンやアンカーのactionアトリビュートの値です。actionアトリビュートの指定方法によって、画面遷移方法を静的アクションと動的アクションの2種類に分類することができます。

■静的アクション

actionアトリビュートの値に固定的な文字列を指定した場合です。
画面遷移先が確定している場合に利用します。

[静的アクションの使用例]

<h:commandButton action="success" value="送信" />

■動的アクション

actionアトリビュートの値にメソッドバインディング式を利用してmanaged beanのメソッドを指定した場合です。この場合、ActionEventが発生すると指定されたメソッドが呼び出され、その返却値がアクションの結果として使用されます。指定するメソッドは、引数なしで返却値がStringである必要があります。
業務ロジックの処理結果によって画面遷移先が分岐する場合に利用します。

[動的アクションを使用する場合のJSPの記述例]

<h:commandButton action="#{myBean.getIdForNextPage}" value="送信" />
[動的アクションを使用する場合のmanaged beanの記述例]
package mypkg;

public class MyBean {
  ...
  public String getIdForNextPage() {
    // 条件に応じて返却値を変更する
    if (...) {
      return "success";
    }
    else {
      return "fail";
    }
  }
}

目次 前ページ次ページ

All Rights Reserved, Copyright © 富士通株式会社 2005