2

我正在使用 JSF 2.0。当我尝试在 h:dataTable 的 'id' 属性中使用变量时,它不采用该变量值。

我在 ui:repeat 中有 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,因此它会中断。

4

3 回答 3

0

可重复组件内的任何组件都将始终具有动态客户端 ID。你不能做这个。

也许您可以为 dataTable 组件分配一个独特的样式类,并使用 jQuery 选择器返回一个包含ui:repeat.

jQuery('.SomeClass');
于 2012-10-01T11:09:32.727 回答
0

我做了一些和你很相似的事情。我有一个 UI:在数据表列中重复。tbh,如果您签入 fire bug,您的数据表 ID 将是唯一的,因为您将其放入 ui:repaet 中。

planMap:0:yourdatatableID
于 2012-10-01T14:31:53.403 回答
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

于 2012-10-05T11:34:33.673 回答