2012-04-12 35 views
0

我陷入了一个相当奇怪的境地。jsf core/primefaces中的树结构下的数据表

我有一个需求,我需要一个树结构来定义一个元素列表。当我们点击树中的任何元素时。它应该展开它下面的部分,以显示与该元素链接的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复选框。

  • 其他包含雇员名单。

感谢

回答

0

根据您回应编辑(如果我理解正确的话)。请注意,这是从头开始写的,所以一些属性名称可能会有所不同关键是根据你点击哪一行来从你的treetable设置一个有效的集合。通过actionListener设置ID,然后该操作将mycontroller.activeCollection设置为您要显示的列表。然后,通过普通的post或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; 
    } 
} 
+0

我想,它不工作。我需要在treenode上显示一些内容(outputText和复选框)并单击它应打开数据表。 – 2012-04-12 12:51:23

+0

您是否想要总共2个数据表或每个树节点?如果第一个选择,只需将它们设置为treeTable的值,并将其值设置为bean中的集合。添加一个commandLink或类似于treeTable,它设置数据表连接的集合是动态的,有或没有ajax。 – 2012-04-12 12:59:15

+0

用不同的方法更新了答案 – 2012-04-12 13:04:39