JSF構成 - <navigation-rule>要素

指定されたビューIDに対してアプリケーションのデフォルトのナビゲーション・ハンドラで使用されるナビゲーション・ルールを宣言します。ネストされた<navigation-case>要素では、指定されるアクションと結果の一意の組合せに基づいて結果ビューが決まります。

構文

<navigation-rule>
  [<description/>]*
  [<display-name/>]*
  [<icon/>]*
  [<from-view-id>viewId</from-view-id>]
  [<navigation-case>*
    [<description/>]*
    [<display-name/>]*
    [<icon/>]*
    [<from-action>fromActionBinding</from-action>]
    [<from-outcome>fromOutcome</from-outcome>]
    <to-view-id>viewId</to-view-id>
    [<redirect/>]
  </navigation-case>]
</navigation-rule>    

<navigation-rule>の子要素

<from-view-id>
使用方法: このルールが関連するビューを宣言します。
値: ビュー識別子。識別子はViewIdPatternに準拠する必要があります。これは、値を次のいずれかに設定する必要があることを示します。
<navigation-case>
使用方法: <from-view-id>に対して、アクションと結果の一意の組合せに基づいて表示される結果ビューを宣言します。
値: <from-action>または<from-outcome>子要素(あるいはその両方、オプション)、<to-view-id>子要素、および<redirect/>子要素(オプション)。

<navigation-case>の子要素

<from-action>
使用方法: アクション・メソッドを宣言します。指定しない場合は、すでに実行されたアクションに関係なくルールが関連します。
値: アクション・メソッドのクラスおよびメソッド名を生成するJSF EL式。
<from-outcome>
使用方法: 結果文字列を宣言します。ケースが関連する場合、この文字列は、UICommandコンポーネントで参照されるアクション・メソッドから戻されるか、またはUICommand コンポーネントのactionプロパティの値である必要があります。指定しない場合は、設定または戻される結果に関係なくルールが関連します。
値: 文字列。
<to-view-id>
使用方法: リンク先ビューを宣言します。
値: ビュー識別子。
<redirect>
使用方法: HTTPリダイレクトを使用してリンク先ビューにナビゲートするようにサーバーに指示します。
値: なし。

  1. 単純なナビゲーション・ルール
  2. 1つのアクションから2つの結果が可能なナビゲーション・ルール
  3. 同じ結果を戻す2つのアクションを使用するナビゲーション・ルール

次の例では、結果がnewsのアクションについて、welcome.jspページの「View News」コマンド・リンクからcurrentnews.jspページにナビゲートするルールを定義します。

<navigation-rule>
  <from-view-id>/welcome.jsp</from-view-id>
  <navigation-case>
    <from-outcome>news</from-outcome>
    <to-view-id>/currentnews.jsp</to-view-id>
  </navigation-case>
</navigation-rule>
    
次の例では、ユーザーとパスワードが認証されるとlogin.jspページからwelcome.jspページにナビゲートし、認証されない場合はlogin.jspページに戻るルールを定義します。このルールは、"success"または"failure"の結果を戻す、login.jspページからのアクションに対して有効です。
<navigation-rule>
  <from-view-id>/login.jsp</from-view-id>
  <navigation-case>
    <from-outcome>success</from-outcome>
    <to-view-id>/welcome.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
    <from-outcome>failure</from-outcome>
    <to-view-id>/login.jsp</from-outcome>
  </navigation-case>
</navigation-rule>
    
次の例では、login.jspのルールを定義します。ユーザーがこのページで実行するアクションは、次の3つのいずれかになります。

「Log in」コマンド・ボタンのアクション・プロパティは、User BeanのloginActionメソッドにバインドされています。ユーザー名とパスワードが有効な場合、このメソッドは結果として文字列"success"を戻します。ユーザー名とパスワードが無効な場合は、結果として文字列"failure"を戻します。
「Register Now」コマンド・リンクは、User Beanのregisterメソッドにバインドされ、結果として文字列"success"を戻します。

<navigation-rule>
  <from-view-id>/login.jsp</from-view-id>
  <navigation-case>
    <from-action>#{user.loginAction}</from-action>
    <from-outcome>success</from-outcome>
    <to-view-id>/welcome.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
    <from-action>#{user.loginAction}</from-action>
    <from-outcome>failure</from-outcome>
    <to-view-id>/login.jsp</to-view-id>
  </navigation-case>
  <navigation-case>
    <from-action>#{user.register}</from-action>
    <from-outcome>success</from-outcome>
    <to-view-id>/register.jsp</to-view-id>
  </navigation-case>
</navigation-rule>
    

<description>要素
<display-name>要素
<icon>要素
JSFでのページ・ナビゲーションの管理
リファレンス: JSF構成要素