JSF構成ファイルには、多数のナビゲーション・ルールおよび各ルールに対する多数のナビゲーション・ケースを格納できます。これまでの例では、以前のキュー・カードでJSFナビゲーション・ダイアグラムを作成してナビゲーション・ケースを追加した際に、次に示すナビゲーション・ルールとナビゲーション・ケースがfaces-config.xml
に自動的に作成されました。
<navigation-rule>
<from-view-id>/Login.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/Success.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/Failure.jsp</to-view-id>
</navigation-case>
</navigation-rule>
このナビゲーション・ルールでは、Login.jsp
ページから他の2つのページであるSuccess.jsp
ページとFailure.jsp
ページにナビゲートするルールを指定しています。つまり、このナビゲーション・ルールでは、2つのナビゲーション・ケース(2つの結果)が発生する可能性があります。
ユーザーがLogin.jsp
ページのコマンド・ボタンをクリックしたとき、どちらのナビゲーション・ケースを使用するかを指定するために、各ケースに対して、アクション・メソッドまたは結果、あるいはその両方を指定できます。
結果には、指定の文字列が戻された場合のみ、該当するナビゲーション・ケースに従うことを指定します。この形式のナビゲーションは静的なナビゲーションです。ユーザーがボタンまたはリンクをクリックすると、定義済の固定されたJSFページが常に表示されます。ボタンまたはリンク自体によってaction
属性が使用され、結果としての文字列が指定されます。例: <commandButton value="Click" action="success"/>
アクション・メソッドには、アクション・メソッドがリンクを処理した場合のみ、該当するナビゲーション・ケースに従うことを指定します。アクション・メソッドは、特定の論理操作を実行して結果を判定し、判定結果を戻します。ボタンまたはリンク自体によってaction
属性が使用され、論理結果を戻すアクション・メソッドを参照するメソッド式が指定されます。例: <commandButton value="Click" action="#{somebean.somemethod}"/>
アクション・メソッドと結果の両方を使用すると、指定したアクション・メソッドがリンクを処理し、かつ、指定した文字列の結果が戻された場合のみ、該当するナビゲーション・ケースに従います。
この例では、アクション・メソッドからの結果を使用して、ユーザーがLogin.jsp
ページの「Login」ボタンをクリックすると次に表示されるページを決定します。結果がsuccess
の場合はSuccess.jsp
ページを表示し、結果がfailure
の場合はFailure.jsp
ページを表示します。
コマンド・ボタンをクリックしたときにボタンのアクション・メソッドをコールするには、そのボタンのaction
属性でメソッド式を使用して、マネージドBeanのメソッドを参照します。
コマンド・ボタンをダブルクリックして「バインドActionプロパティ」ダイアログを使用したときに、次の処理が自動的に実行されました。
LoginInfo.java
ソース・ファイルに作成されました。public Object commandButton1_action() {
// Add event code here...
return null;
}
action
属性がメソッド式に基づいてアクション・メソッドにバインドされました。<h:commandButton value="Login" binding="#{backing_login.commandButton1}"
id="commandButton1"
action="#{backing_login.commandButton1_action}"/>
アクション・メソッドは、パラメータを使用せずにオブジェクトを戻すpublicメソッドであることが必要です。オブジェクトは、論理結果を表し、JSF NavigationHandlerでその論理結果とfaces-config.xml
ファイルにあるナビゲーション・ケース結果が比較され、次に表示するページが決定されます。したがって、生成されたアクション・メソッドに追加するイベント・コードは、"success"
と"failure"
の両方を戻すことで、Login.jsp
ページの2つのナビゲーション・ケース結果をカバーする必要があります。
Copyright © 1997, 2009, Oracle. All rights reserved.