1

ADF について学習していますが、質問があります。静的データを一時的に移入したいADF TreeTableがあります。これには Bean を使用していますが、TreeTable にデータが取り込まれていません。誰かが私が持っているコードをチェックして、何か間違っているかどうか教えてもらえますか?

私のツリーテーブル

      <af:treeTable rowBandingInterval="0" id="tt1" width="100%" value="#{viewScope.MyBean.treeData}">
        <f:facet name="nodeStamp">
          <af:column sortable="false" headerText="" id="c4">
            <af:outputText value="#{row.col1}" id="ot2"/>
          </af:column>
        </f:facet>

        <af:column sortable="false" headerText="Score" align="center" id="c5">
          <af:outputText value="#{row.col2}" id="ot6"/>
        </af:column>

        <af:column sortable="false" headerText="Verified by " align="center" id="c3">
          <af:outputText value="#{row.col3}" id="ot1"/>
        </af:column>
        <af:column sortable="false" headerText="On" align="center" id="c1">
          <af:outputText value="#{row.col4}" id="ot5"/>
        </af:column>
      </af:treeTable>

RowMaker.class

    public List row() {
            List<rowModel> ls = new ArrayList<rowModel>();

            for (int i = 0; i < 10; i++) {
                rowModel tr = new rowModel("+","92%","Person X","14 Feb 2013");
                ls.add(tr);
            }            
            return ls;
        }

RowModel.class

public class rowModel {

    String col1, col2, col3, col4;

    public rowModel(String col1, String col2, String col3, String col4) {
        this.col1 = col1;
        this.col2 = col2;
        this.col3 = col3;
        this.col4 = col4;
    }

    public String getCol1() {
        return col1;
    }
    public String getCol2() {
        return col2;
    }
    public String getCol3() {
        return col3;
    }
    public String getCol4() {
        return col4;
    }
}

マネージド Bean

  <managed-bean id="__7">
    <managed-bean-name id="__5">MyBean</managed-bean-name>
    <managed-bean-class id="__8">com.im.popup.view.rowMaker</managed-bean-class>
    <managed-bean-scope id="__6">view</managed-bean-scope>
  </managed-bean>
4

1 に答える 1

4

TreeTable は、次の形式のデータを期待します。

Manager1
 |-Employee1
 |-Employee2
Manager2
 |-Employee3
 |-Employee4

上記の例では、RowModel クラスには子が関連付けられていません。非常に一般的な Employee の例を取り上げ、TreeTable を操作する方法を示します。

class Employee{
  private String firstName;
  private String lastName;
  private List<Employee> directs;
  Employee(String fName, String lName){
    firstName = fName;
    lastName = lName;
    directs = new ArrayList<Employee>();
  }
  //Getters and setters for above
  public void addDirect(Employee emp){
    directs.add(emp);
  }
}

TreeTable のデータの作成を見てみましょう。

class TreeTablePageModel{
  List<Employee> managers = new ArrayList<Employee>();

  ChildPropertyTreeModel treeModel;
  public TreeTablePageModel(){
    Employee mgr1 = new Employee("First","Manager");
    Employee mgr2 = new Employee("Second","Manager");
    Employee mgr3 = new Employee("Third","Manager");

    Employee emp = new Employee("First","Sub_1");
    mgr1.addDirect(emp);
    emp = new Employee("First","Sub_2");
    mgr1.addDirect(emp);

    emp = new Employee("Second","Sub_1");
    mgr2.addDirect(emp);
    emp = new Employee("Second","Sub_2");
    mgr2.addDirect(emp);

    emp = new Employee("Third","Sub_1");
    mgr3.addDirect(emp);
    emp = new Employee("Third","Sub_2");
    mgr3.addDirect(emp);
    treeModel = new ChildPropertyTreeModel(managers,"directs");
  }

  public ChildPropertyTreeModel getTreeModel(){
    return treeModel;
  }
}

上記のコードでは、Employee オブジェクトの List を ChildPropertyTreeModel にラップし、ADF コンポーネントがその子の値を取得できる属性の名前も渡しています。JSP では、次のようにデータにアクセスします。

<af:treeTable rowBandingInterval="0" id="tt1" width="100%" value="#{viewScope.pageData.treeModel}">
<!-- add columns here -->
</af:treeTable>

そして、私のマネージド Bean 宣言は次のようになります。

<managed-bean id="__7">
  <managed-bean-name id="__5">pageData</managed-bean-name>
  <managed-bean-class id="__8">com.im.popup.view.TreeTablePageModel</managed-bean-class>
  <managed-bean-scope id="__6">view</managed-bean-scope>
</managed-bean>
于 2013-05-13T11:38:31.790 に答える