表でのデータ・バインディングについて

表で使用するデータ・オブジェクトを指定する場合、EL構文のデータ・バインディングの式を使用できます。詳細は、「ADF UIX開発者ガイド」のADF UIXでのデータ・バインディングに関する説明を参照してください。

Oracle ADFバインディングの使用による、データ・コントロールへのデータ・バインディング

Oracle Application Development Framework(Oracle ADF)のバインディングで提供されるデータ・バインドUIコンポーネントを使用すると、データ・バインド表を作成できます。データ・バインド表を簡単に作成する際にデータ・コントロール・パレットを使用する場合は、モデルの属性はADF UIXにより自動的に更新されます。


Example:

...
<table model="${bindings.EmpView1}" id="EmpView18">
  <contents>
    <column>
      <columnFormat columnDataFormat="numberFormat"/>
      <columnHeader>
        <sortableHeader model="${ctrl:createSortableHeaderModel(bindings.EmpView1,'Empno')}"/>
      </columnHeader>
      <contents>
        <messageTextInput model="${uix.current.Empno}" columns="10" readOnly="true">
          <onSubmitValidater>
            <decimal/>
          </onSubmitValidater>
        </messageTextInput>
      </contents>
    </column>
    ...
  </contents>
  <tableSelection>
    <singleSelection model="${bindings.EmpView1Iterator}" text="Select and ">
      <primaryClientAction>
        <firePartialAction targets="EmpView18" source="EmpView18" event="select"/>
      </primaryClientAction>
    </singleSelection>
  </tableSelection>
</table>
...    

ADFバインディングとデータ・コントロール・パレットの詳細は、次を参照してください。

dataObjectおよびdataObjectListを使用したデータ・バインディング

列スタンプは、表の行別には変更されません。したがって、各列のセルにスタンプされているコンテンツのタイプは、buttonコンポーネントなどのように類似したものになります。しかし、コンテンツ自体は異なってもかまいません。たとえば各buttonコンポーネント内部に表示するテキストは行ごとに異なります。データ・バインディングは、表のコンテンツを行ごとに変更する際に表内で使用します。

列スタンプの属性は、名前の付けられた特定のdataObjectではなく現在のdataObjectにバインドされるため、データ・バインディングは表内で動作します。表は、各表の行をレンダリングするときに現在のdataObjectを変更します。列スタンプの属性を、現在のdataObjectの同じキーにバインドすると、表の行内のコンテンツが変わります。

インライン・データを使用すると、次のUIX XMLコードでは列が2、行が3の表がレンダリングされます。tableData属性は、demoTableDataという名前でインライン・データにバインドされます。demoRowDataというdataObjectListは、3つのdataObjectから成ります。1番目の表の列の各セルには、子であるテキストがスタンプされます。テキストの値は、firstColumnTextキーを使用して現在のdataObjectに問い合せて返された結果にバインドされます。2番目の表の列の各セルには、子であるボタンがスタンプされます。ボタンのテキストの値は、secondColumnTextキーを使用して現在のdataObjectに問い合せて返された結果にバインドされます。

また、dataObjectListという表の各要素は、対応する行の現在のdataObjectとして使用されます。列にスタンプする際にUIXが認識する行数はこのdataObjectListのサイズにより決定されます。したがってUIXは、dataObjectList内の各dataObjectに対して各列のスタンプを1回レンダリングします。


Example:

<dataScope xmlns="http://xmlns.oracle.com/uix/ui">
  <provider>
    <data name="demoTableData">
      <inline>
        <demoRowData firstColumnText="First row" secondColumnText="First Button"/>
        <demoRowData firstColumnText="Second row" secondColumnText="Second Button"/>
        <demoRowData firstColumnText="Third row" secondColumnText="Third Button"/>
      </inline>
    </data>
  </provider>
  <contents>
    <table name="table1"
           tableData="${uix.data.demoTableData.demoRowData}">
      <contents>
        <column>
          <contents>
            <!-- first column stamp -->
            <text text="${uix.current.firstColumnText}"/>
          </contents>
        </column>
        <column>
          <contents>
            <!-- second column stamp -->
            <button text="${uix.current.secondColumnText}"/>
          </contents>
        </column>
      </contents>
    </table>
  </contents>
</dataScope>    

データ(つまりモデル)と表の外観(つまりビュー)とを分離することにより、開発者は列のスタンプを変更して表の外観を変更し、後で任意のデータソースをプラグインしてこれらのスタンプにデータを提供できます。

上のコードでは、次の表が生成されます。

Table with 2 columns, 3 rows

Java dataObjectListへのデータ・バインディング

また、Javaを使用してdataObjectListを構築し、そのリストを、UIXで作成した表のデータとして提供できます。


Example:

<dataScope ... >
  <provider>
    <data name="demoTableData">
      <method class="test.MyTable" method="getTableData" />
    </data>
  </provider>
  <contents>
    <table tableData="${uix.data.demoTableData}">
      ...
    </table>
  </contents>
</dataScope>    

表の構造およびスタンプについて
データ・バインドUIXページについて

表の作成
Oracle ADFを使用したStrutsベースのWebアプリケーションの作成
Oracle ADFを使用したモデル1スタイルのWebアプリケーションの作成
tableコンポーネントの使用

 

Copyright © 1997, 2004, Oracle. All rights reserved.