Developer Tools
JDeveloper
JSF構成ファイルにはいくつかのナビゲーション・ルールがあり、それぞれのルールに対していくつかのナビゲーション・ケースが含まれています。 ここまでの例で、JFSナビゲーション・ダイアグラムを作成し、最新のキュー・カードへナビゲーション・ケースを追加した際に、次のナビゲーション・ルールとナビゲーション・ケースが
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のメソッドを参照します。
コマンド・ボタンをダブルクリックしてBind Action Propertyダイアログを使用すると、Oracle JDeveloperは次を自動実行します。
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}"/>
アクション・メソッドは、パラメータを受け入れずにObjectを返すパブリック・メソッドである必要があります。パブリック・メソッドは、JSF NavigationHandlerがあとで
faces-config.xmlファイル内のナビゲーション・ケースにある出力結果と論理的な出力結果を比較し、どのページを次に表示するかについて決定するメソッドです。 したがって、生成したアクション・メソッドに追加するイベント・コードは、
"success"と
"failure"の両方を返し、
Login.jspページが返す2つの実行可能なナビゲーション・ケースの出力結果を網羅することになります。