「Java/JavaEE/WebTier/ConfigJSF」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
巨大で複雑なアプリケーションをJSFで作る際に必要なタスク
-アプリケーション全体がアクセスするバックエンドオブジェクトの登録
-管理ビーンとモデルビーンをページから参照したときに正しい値でインスタンス化するための設定
-アプリケーションのページ遷移を実現するナビゲーションルールの定義
-アプリケーションのパッケージング
----
*Using Annotations to Configure Managed Beans
-ビーンアノテーションを使ってJSFアプリケーションを設定する
-@ManagedBeanをつけると管理ビーンとして登録される
-管理ビーンは(ビュー以外の)スコープをアノテーションで指定できる
-faces-config.xmlで<faces-config>のmetadata-completeをtrueにすると、起動時にすべてのクラスのアノテーションがスキャンされる
-アノテーションはコンポーネント、コンバータ、バリデータ、レンダラーに対しても利用可能
**Using Managed Bean Scopes
-ビーンに対して、保持されるスコープを設定できる
--@ApplicationScoped:すべてのユーザのやりとりにわたって
--@SessionScoped:複数回のHTTPリクエストにわたって
--@ViewScoped:単一ページのやりとりにわたって
--@RequestScoped:単一のHTTPリクエストにわたって
--@NoneScoped:定義なし
--@CustomScoped:ユーザ定義の非標準のスコープ
-@NonScopedにするとビーンは参照されるたびにインスタンス化
-管理ビーンから参照される管理ビーンなどに使うといい
-セッションやアプリケーションスコープにする場合は、ビーンをスレッドセーフにする
-HTTPリクエスト中だけ存在すればいいなら、リクエストスコープ
-ページ遷移するまで存在すればいいなら、ビュースコープ
-管理ビーンはリクエストが来た時にインスタンスが作られる(lazily)
-アプリケーション起動時に、アプリケーションスコープの管理ビーンのインスタンスを作成できる(eager)
--@ManagedBean(eager=true) + @ApplicationScoped
**Application Configuration Resource File
-アプリケーション設定ファイルはXML形式で、通常はfaces-config.xml
<?xml version="1.0" encoding=’UTF-8’?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
...
</faces-config>
--ローカライズされたメッセージや、遷移ルールなどの管理ビーンアノテーションで利用できないもの
--管理ビーンのアノテーション設定をうわがく設定
-設定ファイルは複数も可能で、ファイル参照は以下の通り
--/WEB-INF/libまたは親クラスローダのJARの/META-INF/*faces-config.xml
---バッケージングして利用する場合
--コンテキスト初期化パラメータのjavax.faces.application.CONFIG_FILESでコンマ区切りで指定
---巨大なアプリケーションで複数の設定ファイルが必要な場合
--/WEB-INF/faces-config.xml
---シンプルなアプリケーションの場合
-アプリケーションに登録された設定情報にアクセスするにはApplicationオブジェクトを使う
--JSFがサーバ起動時にApplicationをインスタンス化
**Ordering of Application Configuration Resource Files
-アプリケーション設定ファイルが複数ある場合、ロード順が重要になることがある
-faces-config.xmlの<absolute-ordering>で、ロード順を絶対指定する
--<others>要素をつけない場合は、指定したファイルのみ有効
-faces-config.xmlの<ordering>で、ロード順を相対指定する
--<before>, <after>
--<others>を設定すると、1番先や最後のロード順を指定できる
-<ordering>がないものは、あるものよりも後にロード
----
*Configuring Beans
-ページが初めて管理ビーンを参照したときに、@ManagedBeanまたは設定ファイルによって初期化される
-管理ビーンの生成機能はアプリケーション設定ファイルの<managed-bean>で指定
--1つの設定ファイルに基づいて生成
--ビーンプロパティを追加コードなしでカスタマイズ
--ビーンが生成された時のビーンプロパティ値を設定ファイルで定義
--<value>でビーンのプロパティをほかの値評価式から設定できる
**Using the managed-bean Element
-アプリケーション設定ファイルの<managed-bean>要素の内容で管理ビーンは初期化される
--ページが管理ビーンを参照して、まだインスタンスがないとき
<managed-bean>
<managed-bean-name> UserNumberBean </managed-bean-name>
<managed-bean-class>
guessNumber.UserNumberBean
</managed-bean-class>
<managed-bean-scope> session </managed-bean-scope>
...
</managed-bean>
**Initializing Properties Using the managed-property Element
-<managed-property>で初期値が必要なプロパティを設定する
-<property-name>:プロパティ名
-プロパティ値
--<value>
--<list-entries>
--<map-entries>
--<null-valu>
***Referencing a Java Enum Type
-プロパティ値にEnumを指定⇒<value>はEnum要素の文字列
***Referencing an Initialization Parameter
-プロパティ値に暗黙オブジェクトの参照を設定
<value>#{initParam.defaultAreaCode}</value>
***Initializing Map Properties
-Mapのプロパティの初期化には<map-entries>を使う
<map-entries>
<key-class>int</key-class>
<value-class>java.math.BigDecimal</value-class>
<map-entries>
<map-entry>
<key>xxx</key>
<value>yyy</value>
</map-entry>
</map-entries>
</map-entries>
***Initializing Array and List Properties
-配列やリストのプロパティの初期化には<list-entries>
<list-entries>
<value>xxx</value>
<null-value/>
</list-entries>
***Initializing Managed Bean Properties
-ほかの管理ビーンを参照するプロパティをもつ管理ビーンを初期化
--ビーンの階層を作れる
--<value>#{...}</value>
--参照先のオブジェクトのスコープは参照元より短くならないようにする
---none -> none
---application -> nome, application
---session -> none, application, session
---request -> none, application, session, request,view
---view -> none, application, session, view
***Initializing Maps and Lists
**Registering CustomError Messages
-コンバータやバリデータ向けのカスタムメッセージはアプリケーション起動時に利用可能にする
--メッセージをFacesContext上にプログラムから登録する
--アプリケーション設定ファイルにメッセージを定義する
<application>
<resource-bundle>
<base-name>messages</base-name>
<var>messages</var>
</resource-bundle>
<locale-config>
<default-locale>ja</default-locale>
</locale-config>
</application>
***Using Faces Message to Create a Message
bundle = ResourceBundle.getBundle(basename, context.getViewRoot().getLocale());
**Referencing Error Messages
-ページ上ではメッセージを表示するために、<message>,<messages>タグを使う
--標準のコンバータやバリデータの標準エラーメッセージ
--<esource-bundle>で登録されたメッセージ
-コンバータやバリデータでキューイングされたエラーメッセージを上かける
--converterMessage, requiredMessage, validatorMessage
--値はリテラル値または、ValueExpression
---リソースは<resource-bundle>で定義したものか、ページで<f:loadBundle>で読み込む
**Registering CustomLocalized StaticText
**Using Default Validators
-デフォルトバリデータはすべてのUIInputコンポーネントに適用され、ローカル定義されたバリデータの後に実行される
**Configuring Navigation Rules
-遷移ルールは暗黙的、またはアプリケーション設定ファイルに明示的に設定できる
-明示的な設定
--<navigation-rule>:ルール
---<from-view-id>:遷移元(なしの場合は全ページが対象。*も利用可)
---<navigation-case>:遷移のケースを実行するアクション(from-action)、結果(from-outcome)、遷移先(to-view-id)で指定
***Implicit Navigation Rules
-<navigation-rules>の設定がない場合に適用される
-コンポーネントのアクション属性で遷移先を指定する
----
*Basic Requirements of a JavaServer Faces Application
-JSFアプリケーションの最小のWAR構成
--web.xml
--アプリケーション設定ファイル(faces-config.xmlなど)
--JAR
--クラス、JSFページ、イメージファイルなど
**Configuring an ApplicationWith a Web Deployment Descriptor
-web.xmlのJSF設定項目
--JSFリクエストを扱うサーブレット
--サーブレットマッピン
--アプリケーション設定ファイル(デフォルト以外の場所に置きたいとき)
-web.xmlのJSF設定項目(オプション)
--コンポーネントの状態が保存される場所
--クライアントに暗号化された状態を保存
--クライアントに圧縮した状態を保存
--ページへのアクセス制限
--XML検証を有効にするか
--プロジェクトステージの情報
--カスタムオブジェクトの設定
***Identifying the Servlet for Lifecycle Processing
-JSFが実行されるためには、FacesServletが必要
--リクエスト処理のライフサイクル管理と、リソースの初期化をする
<servlet>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>/faces/* </url-pattern>
</servlet-mapping>
--url-patternはパス指定(/faces/*)、拡張子指定(*.faces)が可能
***Specifying a Path to an Application Configuration Resource File
-アプリケーション設定ファイル(複数可能)がデフォルトの場所にないときまたは、faces-config.xmlという名前ではない時
巨大で複雑なアプリケーションをJSFで作る際に必要なタスク
-アプリケーション全体がアクセスするバックエンドオブジェクトの登録
-管理ビーンとモデルビーンをページから参照したときに正しい値でインスタンス化するための設定
-アプリケーションのページ遷移を実現するナビゲーションルールの定義
-アプリケーションのパッケージング
----
*Using Annotations to Configure Managed Beans
-ビーンアノテーションを使ってJSFアプリケーションを設定する
-@ManagedBeanをつけると管理ビーンとして登録される
-管理ビーンは(ビュー以外の)スコープをアノテーションで指定できる
-faces-config.xmlで<faces-config>のmetadata-completeをtrueにすると、起動時にすべてのクラスのアノテーションがスキャンされる
-アノテーションはコンポーネント、コンバータ、バリデータ、レンダラーに対しても利用可能
**Using Managed Bean Scopes
-ビーンに対して、保持されるスコープを設定できる
--@ApplicationScoped:すべてのユーザのやりとりにわたって
--@SessionScoped:複数回のHTTPリクエストにわたって
--@ViewScoped:単一ページのやりとりにわたって
--@RequestScoped:単一のHTTPリクエストにわたって
--@NoneScoped:定義なし
--@CustomScoped:ユーザ定義の非標準のスコープ
-@NonScopedにするとビーンは参照されるたびにインスタンス化
-管理ビーンから参照される管理ビーンなどに使うといい
-セッションやアプリケーションスコープにする場合は、ビーンをスレッドセーフにする
-HTTPリクエスト中だけ存在すればいいなら、リクエストスコープ
-ページ遷移するまで存在すればいいなら、ビュースコープ
-管理ビーンはリクエストが来た時にインスタンスが作られる(lazily)
-アプリケーション起動時に、アプリケーションスコープの管理ビーンのインスタンスを作成できる(eager)
--@ManagedBean(eager=true) + @ApplicationScoped
**Application Configuration Resource File
-アプリケーション設定ファイルはXML形式で、通常はfaces-config.xml
<?xml version="1.0" encoding=’UTF-8’?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
...
</faces-config>
--ローカライズされたメッセージや、遷移ルールなどの管理ビーンアノテーションで利用できないもの
--管理ビーンのアノテーション設定をうわがく設定
-設定ファイルは複数も可能で、ファイル参照は以下の通り
--/WEB-INF/libまたは親クラスローダのJARの/META-INF/*faces-config.xml
---バッケージングして利用する場合
--コンテキスト初期化パラメータのjavax.faces.application.CONFIG_FILESでコンマ区切りで指定
---巨大なアプリケーションで複数の設定ファイルが必要な場合
--/WEB-INF/faces-config.xml
---シンプルなアプリケーションの場合
-アプリケーションに登録された設定情報にアクセスするにはApplicationオブジェクトを使う
--JSFがサーバ起動時にApplicationをインスタンス化
**Ordering of Application Configuration Resource Files
-アプリケーション設定ファイルが複数ある場合、ロード順が重要になることがある
-faces-config.xmlの<absolute-ordering>で、ロード順を絶対指定する
--<others>要素をつけない場合は、指定したファイルのみ有効
-faces-config.xmlの<ordering>で、ロード順を相対指定する
--<before>, <after>
--<others>を設定すると、1番先や最後のロード順を指定できる
-<ordering>がないものは、あるものよりも後にロード
----
*Configuring Beans
-ページが初めて管理ビーンを参照したときに、@ManagedBeanまたは設定ファイルによって初期化される
-管理ビーンの生成機能はアプリケーション設定ファイルの<managed-bean>で指定
--1つの設定ファイルに基づいて生成
--ビーンプロパティを追加コードなしでカスタマイズ
--ビーンが生成された時のビーンプロパティ値を設定ファイルで定義
--<value>でビーンのプロパティをほかの値評価式から設定できる
**Using the managed-bean Element
-アプリケーション設定ファイルの<managed-bean>要素の内容で管理ビーンは初期化される
--ページが管理ビーンを参照して、まだインスタンスがないとき
<managed-bean>
<managed-bean-name> UserNumberBean </managed-bean-name>
<managed-bean-class>
guessNumber.UserNumberBean
</managed-bean-class>
<managed-bean-scope> session </managed-bean-scope>
...
</managed-bean>
**Initializing Properties Using the managed-property Element
-<managed-property>で初期値が必要なプロパティを設定する
-<property-name>:プロパティ名
-プロパティ値
--<value>
--<list-entries>
--<map-entries>
--<null-valu>
***Referencing a Java Enum Type
-プロパティ値にEnumを指定⇒<value>はEnum要素の文字列
***Referencing an Initialization Parameter
-プロパティ値に暗黙オブジェクトの参照を設定
<value>#{initParam.defaultAreaCode}</value>
***Initializing Map Properties
-Mapのプロパティの初期化には<map-entries>を使う
<map-entries>
<key-class>int</key-class>
<value-class>java.math.BigDecimal</value-class>
<map-entries>
<map-entry>
<key>xxx</key>
<value>yyy</value>
</map-entry>
</map-entries>
</map-entries>
***Initializing Array and List Properties
-配列やリストのプロパティの初期化には<list-entries>
<list-entries>
<value>xxx</value>
<null-value/>
</list-entries>
***Initializing Managed Bean Properties
-ほかの管理ビーンを参照するプロパティをもつ管理ビーンを初期化
--ビーンの階層を作れる
--<value>#{...}</value>
--参照先のオブジェクトのスコープは参照元より短くならないようにする
---none -> none
---application -> nome, application
---session -> none, application, session
---request -> none, application, session, request,view
---view -> none, application, session, view
***Initializing Maps and Lists
**Registering CustomError Messages
-コンバータやバリデータ向けのカスタムメッセージはアプリケーション起動時に利用可能にする
--メッセージをFacesContext上にプログラムから登録する
--アプリケーション設定ファイルにメッセージを定義する
<application>
<resource-bundle>
<base-name>messages</base-name>
<var>messages</var>
</resource-bundle>
<locale-config>
<default-locale>ja</default-locale>
</locale-config>
</application>
***Using Faces Message to Create a Message
bundle = ResourceBundle.getBundle(basename, context.getViewRoot().getLocale());
**Referencing Error Messages
-ページ上ではメッセージを表示するために、<message>,<messages>タグを使う
--標準のコンバータやバリデータの標準エラーメッセージ
--<esource-bundle>で登録されたメッセージ
-コンバータやバリデータでキューイングされたエラーメッセージを上かける
--converterMessage, requiredMessage, validatorMessage
--値はリテラル値または、ValueExpression
---リソースは<resource-bundle>で定義したものか、ページで<f:loadBundle>で読み込む
**Registering CustomLocalized StaticText
**Using Default Validators
-デフォルトバリデータはすべてのUIInputコンポーネントに適用され、ローカル定義されたバリデータの後に実行される
**Configuring Navigation Rules
-遷移ルールは暗黙的、またはアプリケーション設定ファイルに明示的に設定できる
-明示的な設定
--<navigation-rule>:ルール
---<from-view-id>:遷移元(なしの場合は全ページが対象。*も利用可)
---<navigation-case>:遷移のケースを実行するアクション(from-action)、結果(from-outcome)、遷移先(to-view-id)で指定
***Implicit Navigation Rules
-<navigation-rules>の設定がない場合に適用される
-コンポーネントのアクション属性で遷移先を指定する
----
*Basic Requirements of a JavaServer Faces Application
-JSFアプリケーションの最小のWAR構成
--web.xml
--アプリケーション設定ファイル(faces-config.xmlなど)
--JAR
--クラス、JSFページ、イメージファイルなど
**Configuring an ApplicationWith a Web Deployment Descriptor
-web.xmlのJSF設定項目
--JSFリクエストを扱うサーブレット
--サーブレットマッピン
--アプリケーション設定ファイル(デフォルト以外の場所に置きたいとき)
-web.xmlのJSF設定項目(オプション)
--コンポーネントの状態が保存される場所
--クライアントに暗号化された状態を保存
--クライアントに圧縮した状態を保存
--ページへのアクセス制限
--XML検証を有効にするか
--プロジェクトステージの情報
--カスタムオブジェクトの設定
***Identifying the Servlet for Lifecycle Processing
-JSFが実行されるためには、FacesServletが必要
--リクエスト処理のライフサイクル管理と、リソースの初期化をする
<servlet>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>/faces/* </url-pattern>
</servlet-mapping>
--url-patternはパス指定(/faces/*)、拡張子指定(*.faces)が可能
***Specifying a Path to an Application Configuration Resource File
-アプリケーション設定ファイル(複数可能)がデフォルトの場所にないときまたは、faces-config.xmlという名前ではない時
***Specifying a Path to an Application Configuration Resource File
**Configuring Project Stage
**Including the Classes, Pages, andOther Resources