29.2. バイジェクション用アノテーション
次の 2 つのアノテーションはバイジェクションを制御します。 これらの属性はコンポーネントインスタンス変数またはプロパティのアクセサメソッドで発生します。
@In@In
@InCopy to Clipboard Copied! Toggle word wrap Toggle overflow コンポーネントの属性が各コンポーネント呼び出しの開始時にコンテキスト変数からインジェクトされることを指定します。 コンテキスト変数が null の場合、 例外が送出されます。@In(required=false)
@In(required=false)Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンポーネントの属性が各コンポーネント呼び出しの開始時にコンテキスト変数からインジェクトされることを指定します。 コンテキスト変数は null でも構いません。@In(create=true)
@In(create=true)Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンポーネントの属性がコンポーネント呼び出しの開始時にコンテキスト変数からインジェクトされることを指定します。コンテキスト変数が null の場合、コンポーネントのインスタンスが Seam によって作成されます。@In(value="contextVariableName")
@In(value="contextVariableName")Copy to Clipboard Copied! Toggle word wrap Toggle overflow アノテーションを付けられたインスタンス変数名を使用せず、 コンテキスト変数名を明示的に指定します。@In(value="#{customer.addresses['shipping']}")@In(value="#{customer.addresses['shipping']}")Copy to Clipboard Copied! Toggle word wrap Toggle overflow 各コンポーネント呼び出しの開始時に JSF EL 式を評価することで、コンポーネントの属性がインジェクトされることを指定します。value− コンテキスト変数名を指定します。デフォルトはコンポーネントの属性名です。あるいは#{...}で囲まれた JSF EL 式を指定します。create− コンテキスト変数がすべてのコンテキストで未定義 (null) の場合、 Seam がコンテキスト変数と同じ名前のコンポーネントをインスタンス化するよう指定します。デフォルトはfalseです。required− コンテキスト変数がすべてのコンテキストで未定義の場合、 Seam が例外を送出するよう指定します。
@Out@Out
@OutCopy to Clipboard Copied! Toggle word wrap Toggle overflow Seam コンポーネントであるコンポーネントの属性が呼び出しの終わりでそのコンテキスト変数にアウトジェクトされることを指定します。 属性が null の場合、 例外が送出されます。@Out(required=false)
@Out(required=false)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Seam コンポーネントであるコンポーネント属性が呼び出しの終わりでそのコンテキスト変数にアウトジェクトされることを指定します。 属性は null でも構いません。@Out(scope=ScopeType.SESSION)
@Out(scope=ScopeType.SESSION)Copy to Clipboard Copied! Toggle word wrap Toggle overflow Seam コンポーネントタイプ ではない コンポーネントの属性が呼び出しの終わりで特定スコープにアウトジェクトされることを指定します。別の方法として、明示的にスコープが指定されていない場合、@Out属性を持つコンポーネントのスコープ (またはコンポーネントがステートレスであればEVENTスコープ) が使用されます。@Out(value="contextVariableName")
@Out(value="contextVariableName")Copy to Clipboard Copied! Toggle word wrap Toggle overflow アノテーションを付けられたインスタンス変数名を使用せず、 コンテキスト変数名を明示的に指定します。value− コンテキスト変数名を指定します。デフォルトはコンポーネントの属性名です。required− アウトジェクトするときにコンポーネントの属性が null の場合、 Seam が例外を送出するよう指定します。
これらのアノテーションは通常次のように共に利用します。
@In(create=true) @Out private User currentUser;
@In(create=true)
@Out private User currentUser;
Seam コンポーネントがインジェクトされる他のクラスのインスタンスのライフサイクルを管理する場合、 次のアノテーションは マネージャコンポーネント パターンをサポートします。 コンポーネントの getter メソッドに付与されます。
@Unwrap@Unwrap
@UnwrapCopy to Clipboard Copied! Toggle word wrap Toggle overflow このアノテーションが付いている getter メソッドにより返されるオブジェクトがコンポーネントの代わりにインジェクトされることを指定します。
次のアノテーションは ファクトリコンポーネント パターンをサポートします。 この場合 Seam コンポーネントがコンテキスト変数の値の初期化を行います。 特に非 Faces 要求に対する応答のレンダリングに必要なあらゆる状態の初期化に便利です。 コンポーネントメソッドで指定されます。
@Factory@Factory("processInstance") public void createProcessInstance() { ... }@Factory("processInstance") public void createProcessInstance() { ... }Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテキスト変数に値がない場合に、 このコンポーネントのメソッドが指定コンテキスト変数の値の初期化に使用されることを指定します。 このスタイルはvoidを返すメソッドと併用します。@Factory("processInstance", scope=CONVERSATION) public ProcessInstance createProcessInstance() { ... }@Factory("processInstance", scope=CONVERSATION) public ProcessInstance createProcessInstance() { ... }Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンテキスト変数に値がない場合、 指定コンテキスト変数の値の初期化にはこのメソッドで返される値を使用することを指定します。 このスタイルは値を返すメソッドと併用します。 明示的にスコープが指定されていない場合、@Factoryメソッドを持つコンポーネントのスコープが使用されます (そのコンポーネントがステートレスではない場合EVENTコンテキストが使用されます)。value− コンテキスト変数の名前を指定します。メソッドが getter メソッドの場合、 JavaBeans のプロパティ名がデフォルトになります。scope− Seam が戻り値をバインドするスコープを指定します。値を返すファクトリメソッドの場合にのみ意味があります。autoCreate−@Inがcreate=trueを指定していない場合でも、 変数が要求されたときは常にこのファクトリメソッドが自動的に呼び出されるよう指定します。
次は
Log をインジェクトできるようにするアノテーションです。
@Logger@Logger("categoryName")@Logger("categoryName")Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンポーネントフィールドにorg.jboss.seam.log.Logのインスタンスをインジェクトするよう指定します。 エンティティ Bean の場合、 このフィールドはstaticとして宣言されなければなりません。value− ログカテゴリの名前を指定します。デフォルトはコンポーネントのクラス名です。
最後のアノテーションでは要求パラメータ値をインジェクトできます。
@RequestParameter@RequestParameter("parameterName")@RequestParameter("parameterName")Copy to Clipboard Copied! Toggle word wrap Toggle overflow コンポーネントの属性に要求パラメータ値をインジェクトするよう指定します。 基本的なタイプの対話は自動的に行われます。value− 要求パラメータの名前を指定します。デフォルトはコンポーネントの属性名です。