2012-04-12 72 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