Jsf 为循环中的h:dataTable生成唯一id

Jsf 为循环中的h:dataTable生成唯一id,jsf,jsf-2,Jsf,Jsf 2,我正在使用JSF2.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#{plan

我正在使用JSF2.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,因此它会中断。

可重复组件中的任何组件都将始终具有动态客户端id。您不能这样做

也许您可以为dataTable组件指定一个唯一的样式类,并使用jQuery选择器返回
ui:repeat
中所有dataTable对象的数组

jQuery('.SomeClass');

可重复组件中的任何组件都将始终具有动态客户端id。您不能这样做

也许您可以为dataTable组件指定一个唯一的样式类,并使用jQuery选择器返回
ui:repeat
中所有dataTable对象的数组

jQuery('.SomeClass');

我做了一些和你很相似的事情。我有一个UI:在datatable列中重复。tbh,如果您签入firebug,那么当您将datatable id放入ui:repet时,它将是唯一的

planMap:0:yourdatatableID

我做了一些和你很相似的事情。我有一个UI:在datatable列中重复。tbh,如果您签入firebug,那么当您将datatable id放入ui:repet时,它将是唯一的

planMap:0:yourdatatableID

这个问题可以通过在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:planTable
outerTable:1:planTable
。这甚至将唯一id扩展到datatable中的每个元素,即
outerTable:1:planTable:1:columnid
outerTable:0:planTable:0:columnid

,这个问题可以通过在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:planTable
outerTable:1:planTable
。这甚至将唯一id扩展到datatable中的每个元素,即
outerTable:1:planTable:1:columnid
outerTable:0:planTable:0:columnid

组件将根据指定的规则发出客户端标识符,感谢大家的研究和回复。我在datatable中使用datatable解决了这个问题,如下所示<代码>
。通过此操作,我获得了唯一id,即
outerTable:0:planTable
outerTable:1:planTable
…这甚至将唯一id扩展到datatable中的每个元素,即
outerTable:1:planTable:1:columnid
outerTable:0:planTable:0:columnid
组件将根据指定的规则发出客户端标识符,感谢大家的研究和响应。我在datatable中使用datatable解决了这个问题,如下所示<代码>。通过此操作,我获得了唯一id,即
outerTable:0:planTable
outerTable:1:planTable
…这甚至将唯一id扩展到datatable中的每个元素,即
outerTable:1:planTable:1:columnid
outerTable:0:planTable:0:columnid
,这可能是一个解决方案,但在我的例子中,我有多个格式不同的列,所以我更喜欢只使用datatable。现在我在datatable中使用datatable,这可能是一个解决方案,但在我的例子中,我有多个格式不同的列,所以我更喜欢只使用datatable。