<bean>要素 |
![]() |
ネームスペース: | http://xmlns.oracle.com/uix/ui |
派生元: | <ui:dataProvider>要素 |
グループ: | UIX Components |
要素の型: | DataProvider |
構文 |
![]() |
<bean
[ useLocalName="boolean"
] >
<!-- The following child can be anything derived from the given element -->
<boundValue> </boundValue>
</bean>
説明 |
![]() |
<bean>要素は、データ・プロバイダを定義します。データ・プロバイダは、JavaBeansコーディング・パターンに従い、Javaオブジェクトから自動的に作成されます。isメソッドおよびゲッター・メソッドが、自動的に選択キーとして解釈されます。
Javaオブジェクトは、Beanに含まれているバインド値の要素を使用して取得されます。たとえば、次の要素はHttpSessionのオブジェクトをDataObjectとして使用します。
<bean> <dataObject source="ctrl:httpSession" select="foo"/> </bean>
デフォルトでは、各<bean>要素が提供できるのはDataObjectのみです。ただし、useLocalName属性を、<data>要素とともに使用した場合は、データ・オブジェクトのグループを提供できます。
<data name="foo:*"> <bean useLocalName="true"> <dataObject source="ctrl:httpSession"/> </bean> </data>
次の点に注意してください。第1に、foo:*はデータ名として使用しています。つまり、fooのネームスペースにあるものはすべてこのデータ・プロバイダを使用します。第2に、useLocalNameをtrueに設定しています。第3に、<dataObject>要素にはselect属性がありません。これは、<dataObject>要素がHttpSessionの項目を返さず、セッション全体をDataObjectとして返すということです。useLocalNameをオンにすると、要求されたローカル名が追加の選択キーとして使用されます。この意味を理解するには、<bean>要素を参照する次のUIX Languageの例を参照してください。
<styledText data:text="value@foo:first"/> <styledText data:text="value@foo:second"/>
このコードにより、HttpSessionから2つのオブジェクトが取得されます。オブジェクト名はfirstおよびsecondです。各<styledText>のテキストについて、UIXは2つのJavaオブジェクトに対してgetValue()をコールします。ただし、<styledText>には、HttpSessionまたは特定のJavaオブジェクトに対する依存性を示すコードがないことに注意してください。その情報はすべて前述の<bean>要素および<dataObject>要素にエンコードされており、ソースの異なるデータを簡単に1箇所にスワップインできます。
デフォルトでは、UIXはBeanをDataObjectに変えるためにイントロスペクションを使用することにも、注意してください。多くのアプリケーションでは、これで十分です。しかし、UIXでは、イントロスペクションより効率的なアダプタを使用するAPIを提供しています。詳細は、oracle.cabo.ui.data.bean.BeanAdapterUtilsを参照してください。
<bean>で使用できるソースはHttpSessionのみではありません。たとえば、"ctrl:httpSession"をビルトインUIX Controllerのデータ・オブジェクトで置き換えることができます。これには、eventResult、pageStateオブジェクト、servletContext、servletRequestの属性が含まれます。次の例では、BeanはEventResultに格納されます。
<bean> <dataObject select="fooKey" source="ctrl:eventResult"/> </bean>
また、BeanはDataObjectを介してアクセスできる任意のJavaオブジェクトに格納できます。たとえば、次のようになります。
<data name="foo"> <method ..../> </data> <data name="bar"> <bean> <dataObject select="someKey" source="foo"/> </bean> </data>
この例では、fooという1つのDataObjectを定義しています。これはDataObjectを返すJavaメソッドから取得されます。BeanはそのDataObject中のsomeKeyという選択に格納されます。これらのデータ・プロバイダはどちらも同じ<dataScope>で宣言できることに注意してください。(実際には、<data>要素の順序を意識する必要はありません。)
<bean>は再帰的にも使用できます。
<data name="foo"> <method ..../> </data> <data name="bar"> <bean> <dataObject select="someKey" source="foo"/> </bean> </data> <data name="baz"> <bean> <dataObject select="anotherKey" source="bar"/> </bean> </data>
したがって、別のJavaBeans内のJavaBeans属性は、独自のDataObjectとして公開できます。
また、<bean>内で<dataObject>要素を使用する必要さえなく、任意のboundValue要素を使用できます。boundValue要素のほとんどは、特に<bean>とは関連しませんが、BeanをRenderingContext内に格納できる<contextProperty>要素は<bean>に関連があります。
<data name="foo"> <bean> <contextProperty select="yourNamespace:yourName"/> </bean> </data>
属性 |
![]() |