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

根据您的回复进行编辑(如果我理解正确的话)。请注意,这是从头开始编写的,因此某些属性名称可能会有所不同。关键是根据单击的行从树表中设置一个活动集合。通过 actionListener 设置一个 ID,然后该操作将 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 回答