JSF構成ファイルには、様々なナビゲーション・ルールと、各ルールに対する様々なナビゲーション・ケースを含めることができます。ユーザーがページ上のリンクをクリックしたときに使用されるナビゲーション・ケースを指定するには、各ケースに対してアクション・メソッド、結果あるいはその両方を指定します。
結果を指定すると、指定した文字列が戻された場合のみ、該当するナビゲーション・ケースが発生します。このナビゲーションの形式は、静的なナビゲーションです。
アクション・メソッドを指定すると、そのアクション・メソッドがリンクを処理した場合のみ、該当するナビゲーション・ケースが発生します。
アクション・メソッドと結果の両方を指定すると、指定したアクション・メソッドがリンクを処理し、指定した文字列が戻された場合のみ、該当するナビゲーション・ケースが発生します。
静的なナビゲーションを使用する場合は、ユーザーがボタンまたはリンクをクリックすると、定義済の固定されたJSFページが常に表示されます。ボタンまたはリンク自体によってアクション属性が使用され、文字列の結果が指定されます。
ナビゲーション・ケースに結果を使用する場合は、JSFナビゲーション・ダイアグラム上にナビゲーション・ケースを描画すると、JDeveloperによって結果が自動的に追加されます。これは、結果の値を戻すためのリンクが必要であることを意味します。
ページのナビゲーションを決定するためにビジネス・ロジックが必要な場合は、UICommandコンポーネント・タグのaction
属性をアクション・メソッドにバインドします。アクション・メソッドは、結果文字列を戻す必要があります。この結果文字列は、JSF NavigationHandlerによって、faces-config.xml
ファイルのナビゲーション・ケースの結果と比較され、次のページが決定されます。
アクション・メソッドは、パラメータなしのpublicメソッドで、結果を表すString
を戻す必要があります。JSFでは、ビジネス・ロジックとインタフェース・ロジックが明確に分離しています。アクション・メソッドは、イベントまたはコンポーネントにアクセスできません。したがって、アクション・イベント・メソッドを使用して、アクション・メソッドで必要となるユーザー・インタフェース・ロジックを処理します。
たとえば、ログイン・ページを作成します。ユーザーは、このページで各自の名前とパスワードを入力し、送信コマンド・ボタンをクリックします。名前とパスワードが有効な場合、ユーザーは初期画面ページに移動します。名前とパスワードが無効な場合、ユーザーは登録ページに移動します。
ページ上のcommandButton
タグのアクション属性では、Login
Beanへのメソッド・バインディングを使用して、submitメソッドにアクセスします。
#{login.submit}
Login
Beanのsubmit()
メソッドは、次のようになります。
public String submit()
{ if (...)
return "success";
else
return "failure";
}
ログイン・ページに対するfaces-config.xml
ファイルのナビゲーション・ルールには、successとfailureの結果に対応する2つのケースが含まれます。
Copyright © 1997, 2007, Oracle. All rights reserved.