<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サーブレットのデータ・オブジェクトで置き換えることができます。 これには、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>


    属性

    説明
    useLocalName デフォルトでは、バインド値により返されるJavaオブジェクトは、直接DataObjectとして解釈されるか、またはDataObjectに変えられます。 ただし、この属性がtrueに設定されている場合、JavaオブジェクトはDataObjectであることが必要で、要求されたデータ・オブジェクトのローカル名は、選択キーとして解釈されます。 この使用例は上の例を参照してください。
    boolean

    子要素

    説明 必須 組込み可能な数
    <(その他の要素)>
    単一のデータ・プロバイダ定義。
    はい 1