我正在使用JSF 2.0。当我试图在h:dataTable的'id'属性中使用变量时,它不会获取该变量值。
我在ui中有h:dataTable:使用id值作为ui:repeat的索引重复,如下所述。
<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 :(得分:0)
可重复组件内的任何组件始终具有动态客户端ID。你不能这样做。
也许您可以为dataTable组件分配一个唯一的样式类,并使用jQuery选择器返回ui:repeat
中所有dataTable对象的数组。
jQuery('.SomeClass');
答案 1 :(得分:0)
我做的事与你非常相似。我有一个UI:在数据表列内重复。 tbh,如果你检查了火灾bug,你的数据表id将是唯一的,因为你把它放在一个ui:repaet。
planMap:0:yourdatatableID
答案 2 :(得分:0)
通过在数据表中使用数据表可以解决此问题。第二个数据表保存在第一个数据表的列中,如下所示。
<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>
通过这种方式,您可以获得outerTable:0:planTable
,outerTable:1:planTable
的唯一ID。这甚至会将唯一ID扩展到数据表中的每个元素outerTable:1:planTable:1:columnid
,outerTable:0:planTable:0:columnid