2012-10-01 69 views
2

我正在使用JSF 2.0。當我試圖在h:dataTable的'id'屬性中使用一個變量時,它沒有使用該變量值。在循環中生成h:dataTable的唯一標識

我有h:在ui中的dataTable:重複id值作爲ui的索引:重複如下所述。

<ui:repeat var="planMap" value="#{planAccountMap.entrySet().toArray()}" varStatus="planMapStatus"> 

    <h:dataTable id="planTable#{planMapStatus.index}" value="#{planMap.value}" var="accountList"> 

是否有人知道我們是否可以爲循環中的h:dataTable生成動態id?

我有一個正在利用表id的Java腳本,但因爲我無法爲循環中的每個表具有唯一的id,所以它的中斷。

+0

組件將根據所指定的規則發出客戶端標識符[ UIComponent.getClientId](http://docs.oracle.com/javaee/6/api/javax/faces/component/UIComponent.html#getClientId%28javax.faces.context.FacesContext%29) – McDowell

+0

非常感謝您的研究和響應。我已經通過在數據表中使用datatable解決了這個問題,如下所示。 ''。通過這我得到唯一id爲'outerTable:0:planTable','outerTable:1:planTable' ...這甚至擴展到數據表中的每個元素的唯一id爲'outerTable:1:planTable:1:columnid', 'outerTable:0:planTable:0:columnid' – Arpit

回答

0

此問題可以通過在datatable中使用datatable來解決。第二個數據表保存在第一個數據表的列中,如下所示。

<h:dataTable id="outerTable" value="#{planAccountMap.entrySet().toArray()}" var="planMap" width="100%"> 
    <h:column> 
    <h:dataTable id="planTable" value="#{planMap.value}" var="accountList" 
    headerClass="tablehead" 
    rowClasses="'',altrowcoloropt1" 
    first="0"> 
    <h:column> 
    <f:facet name="header"> 
     <h:outputText value="Date" /> 
    </f:facet> 
     <h:outputText value="#{accountList.date}"/> 
    </h:column> 
    <h:column> 
     <f:facet name="header" > 
     <h:outputText value="Account Name" /> 
    </f:facet> 
    <h:outputText value="#{accountList.accountName}"/> 
    </h:column> 
</h:dataTable> 
</h:column> 
</h:dataTable> 

由此,你會得到唯一的id作爲outerTable:0:planTableouterTable:1:planTable。這甚至唯一id延伸到在數據表中的每個元件作爲outerTable:1:planTable:1:columnidouterTable:0:planTable:0:columnid

0

可重複組件內部的任何組件都將始終具有動態客戶端ID。你不可以做這個。

也許相反,您可以爲dataTable組件分配一個唯一的樣式類,並使用jQuery選擇器返回ui:repeat中所有dataTable對象的數組。

jQuery('.SomeClass'); 
0

我做一些與你非常相似的事情。我有一個用戶界面:在數據表列中重複。 tbh,如果你檢查火蟲,你的數據表id將是唯一的,因爲你把它放在ui裏面:repaet。

planMap:0:yourdatatableID 
+0

這可能是一個解決方案,但在我的情況下,我有不同格式的多列,所以我寧願只使用數據表。現在我正在使用數據表內的數據表完美工作。 – Arpit

+0

@Arpit很高興知道.. :) – PermGenError