0

私はかなり奇妙な状況で立ち往生しています。

要素のリストを定義するためにツリー構造が必要であるという要件があります。そして、ツリー内のそれらの要素のいずれかをクリックすると. その下のセクションを展開して、その要素にリンクされている2つのデータテーブルを並べて表示する必要があります。

JSF 2.0 コアや、primefaces 3.1 も使用できます。

出来ますか ??

誰でも助けてもらえますか...どんな提案もいただければ幸いです。

更新しました

私のモデルは次のようなものです:

class Shop{
    boolean isoperational;
    String name;
    List<Item> items;
    List<boolean> itempresent;
    List<Employee> employees; 
}

ツリー ノード上のショップの名前と isoperational チェックボックスが必要です。そのノードをクリックすると、2 つのデータテーブルが開きます。

  • アイテムのリストと itempresent チェックボックスを含むもの。

  • 従業員のリストを含むその他。

ありがとう

4

1 に答える 1

0

あなたの回答に従って編集されました(私があなたを正しく理解している場合)。これは head から記述されるため、一部の属性名が異なる場合があることに注意してください。ポイントは、クリックされた行に応じてツリーテーブルからアクティブなコレクションを設定することです。ID は actionListener を介して設定され、アクションは mycontroller.activeCollection を表示するリストに設定します。次に、データテーブルは、クリックした行に応じた値で通常の投稿または ajax を介して再レンダリングされます。

マークアップ

<p:treeTable value="#{myController.treenode}" var="item">
    <p:column>
        <h:commandLink action="#{myController.setActiveShop}" value="set">
            <f:setPropertyActionListener target="#{myController.shipName}" value="#{item.shop.name}"/>
        </h:commandButton>
    </p:column>
</p:treeTable>

<p:dataTable value="#{myController.activeShop.items" rendered="#{!empty myController.activeShop}" var="item">
   <p:column>#{item.name}</p:column>
</p:datatable>

<p:dataTable value="#{myController.activeShop.employees" rendered="#{!empty myController.activeShop}" var="item">
   <p:column>#{item.name}</p:column>
</p:datatable>

コントローラ

@ManagedBean
@ViewScoped // Or @SessionScoped... something that can cache lists, not sure how this would be done with requestscope
public class MyController{
    private List<Shop> shopList; // Set this from a datasource. Or use only shopTree below to store your shops..
    private Shop activeShop;
    private String shopName;
    private TreeNode shopTree; // Generate this from shopList

    // insert getters and setters

    private setActiveShop(){
        for(Shop s : shipList)
            if(s.getName().equals(shopName)
                activeShop = s;
    }
}
于 2012-04-12T10:25:29.087 に答える