3.3.1 JSFの機能
ここでは,JSFの機能について説明します。
- 〈この項の構成〉
(1) JSFの基本機能
JSFを利用したWebアプリケーションの開発では,アクセスページビューの定義,ページの再利用,クライアントからの入力値の型の変換やバリデーション,アプリケーション内でのイベントの制御など,いろいろな機能を利用できます。
JSFの機能の多くは,ManagedBeanとEL式を利用して実現します。
ManagedBeanとは,JSPおよびFaceletsページで使用するデータとメソッドを定義するJavaBeanのことです。ManagedBeanの詳細については,JSFの仕様を参照してください。
EL式とは,規定の形式で記述することで,ManagedBeanに定義したプロパティやメソッドをJSFタグの属性と関連づけることができる機能です。EL式はJSPの仕様の一部です。詳細は,JSPの仕様を参照してください。
(2) アプリケーションサーバでのJSFの動作
アプリケーションサーバでのJSFの動作を次に示します。
-
ValueChangeListener,ActionListener,AjaxBehaviorListener,ComponentSystemEventListenerとして動作するメソッドをEL式で指定した場合に,同じメソッド名で引数あり,引数なしが存在すると,引数ありのメソッドだけが呼ばれます。
-
<f:facet>タグの中に複数のコンポーネントがある場合,JSPページでは,最初に記述されているコンポーネントが処理されますが,Faceletsページでは,記述されているすべてのコンポーネントが処理されます。
-
<f:subview>タグが<f:view>タグの外に記述された場合,JSPページでは,<f:view>の値が<f:subview>の値に上書きされます。Faceletsページでは,<f:view>の値は変わらず,<f:view>および<f:subview>が一緒に表示されます。
-
<f:ajax>タグを利用する場合,<h:head>タグを記述しなければいけません。記述しないと,<f:ajax>が動作しません。
-
イベントの処理にvalueChangeListener属性または<f:valueChangeListener>タグを利用する場合に,<h:inputText>タグのvalue属性にValueExpressionを,scope属性にRequestScopedを設定した場合,入力値を変更しなくても,valueChangeListenerのメソッドが実行されます。
-
ユーザアプリケーションが"csfcfc"というCookieを登録し,FaceletsにFlashオブジェクトを利用して繰り返しリクエストをした場合,Flashオブジェクトのデータの読み込みが失敗して,例外処理(NullPointerException)が発生します。
-
<ui:repeat>タグの繰り返し回数は,size属性に設定された値より1回多くなります。
-
ブラウザの仕様によって,一部のタグの属性が無効になるおそれがあります。ブラウザの仕様をご確認ください。
-
<composite:attribute>タグ,<composite:facet>タグ,<composite:insertFacet>タグ,<composite:renderFacet>タグのrequierd属性を有効にする場合は,コンテキストパラメタjavax.faces.PROJECT_STAGE の値をDevelopment に設定してください。
-
コンテキストパラメタjavax.faces.FACELETS_REFRESH_PERIODの指定値は,Faceletsページへの最新のリクエストを受けてからFaceletsファイルの更新を確認するまでの時間になります。そのため,短時間のうちに多くのリクエストが送られる環境では,最新のリクエストに合わせて更新の確認までの時間が延長されてしまい,Faceletsファイルの更新が反映されない状態が続くおそれがあります。
-
アプリケーションサーバでは,Bean Validationの機能は常に有効になります。Bean Validationの機能を無効にする方法は,マニュアル「アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)」の「10.5.1 JSFからBean Validationの利用手順」を参照してください。
-
<f:attribute>タグで値を指定する対象として,文字列(java.lang.String型)を指定値とする属性を指定してください。
-
JSFアプリケーションのクライアント画面からのPOSTデータに含まれるリクエストのパラメタ数は,使用するJSFタグの種類や使用方法によって異なります。webserver.connector.limit.max_parameter_countキーでリクエストパラメタ数の上限値を設定する場合は,本番環境と同等の環境で実際のJSFアプリケーションを使用して検証することをお勧めします。
-
アプリケーションのJARファイル内のMETA-INF/resourcesのリソースを更新した場合,リロード時にKDJE39556-Wのメッセージが出力されます。この状態でJSFからリソースにアクセスした場合,更新したリソースが取得できます。