6.4. 設定可能なプロパティのタイプ
文字列、 プリミティブ、 プリミティブラッパータイプのプロパティは次のように設定します。
- org.jboss.seam.core.manager.conversationTimeout 60000
- <core:manager conversation-timeout="60000"/>
<component name="org.jboss.seam.core.manager">
<property name="conversationTimeout">60000</property>
</component>
<component name="org.jboss.seam.core.manager">
<property name="conversationTimeout">60000</property>
</component>
文字列またはプリミティブの配列、 セット、 一覧にも対応します。
org.jboss.seam.bpm.jbpm.processDefinitions order.jpdl.xml, return.jpdl.xml, inventory.jpdl.xml
org.jboss.seam.bpm.jbpm.processDefinitions
order.jpdl.xml,
return.jpdl.xml,
inventory.jpdl.xml
文字列値のキーと文字列またはプリミティブの値から成るマップでさえもサポートされます。
複数の値を持つプロパティを設定する場合、 Seam は
SortedSet/SortedMap が使用されていない限りデフォルトでは components.xml に設定された属性の順序を維持します。 この場合、Seam は TreeMap/TreeSet を参照します。 プロパティに具体的なタイプ (LinkedList など) がある場合はそのタイプを使用します。
次のように完全修飾クラス名を指定することでそのタイプを上書きすることも可能です。
最後に、値バインディング式を使ってコンポーネントをリンクさせることができます。 これは呼び出し時ではなくコンポーネントのインスタンス化時に起こるため、
@In でのインジェクションとは非常に異なる点に注意してください。 JavaServer Faces (JSF) や Spring などの従来の IoC コンテナによって提供される依存性インジェクションに似ています。
<drools:managed-working-memory name="policyPricingWorkingMemory"
rule-base="#{policyPricingRules}"/>
<drools:managed-working-memory name="policyPricingWorkingMemory"
rule-base="#{policyPricingRules}"/>
<component name="policyPricingWorkingMemory"
class="org.jboss.seam.drools.ManagedWorkingMemory">
<property name="ruleBase">#{policyPricingRules}</property>
</component>
<component name="policyPricingWorkingMemory"
class="org.jboss.seam.drools.ManagedWorkingMemory">
<property name="ruleBase">#{policyPricingRules}</property>
</component>
Seam はコンポーネントの Bean プロパティへ初期値を代入する前に EL 式の文字列も解決します。 このためコンテキスト依存データの中にはコンポーネントにインジェクトできるものもあります。
ただし、1 つ重要な例外があります。 初期値が Seam の
ValueExpression または MethodExpression のいずれかに割り当てられる場合、 その EL の評価は遅延されて適切な式のラッパーが生成されプロパティに割り当てられます。 Seam Application Framework の Home コンポーネントにあるメッセージテンプレートがその一例です。
コンポーネントの内部では、
ValueExpression または MethodExpression のいずれかで getExpressionString() を呼び出すと式の文字列にアクセスすることができます。 プロパティが ValueExpression となる場合はその値を getValue() で解決します。 プロパティが MethodExpression となる場合は invoke({Object arguments}) でメソッドを呼び出します。 MethodExpression プロパティに値を割り当てるには、 初期値全体がひとつの E L式でなければなりません。