Java 如何动态设置h:selectBooleanCheckbox的id?

Java 如何动态设置h:selectBooleanCheckbox的id?,java,jsf-2,Java,Jsf 2,我有 (其中wai:collectionIter是一个自定义标记) 但是相应的html代码如下所示 <wai:collectionIter value="#{listModel.listRows}" valueVar="listRow" odd="odd" even="even" styleVar="rowStyle"> <tr class="#{rowStyle}"> <td> <h:selectBooleanCheckbo

我有


(其中wai:collectionIter是一个自定义标记)

但是相应的html代码如下所示

<wai:collectionIter value="#{listModel.listRows}" valueVar="listRow" odd="odd" even="even" styleVar="rowStyle">
  <tr class="#{rowStyle}">
    <td>
      <h:selectBooleanCheckbox value="#{listRow.rowSelected}" disabled="#{detailModel.readOnly}">
        <c:set target="#{component}" property="id" value="#{listRow.rowData.name}"/>
      </h:selectBooleanCheckbox>
    </td>
    <ui:insert name="columnData"/>
  </tr>
</wai:collectionIter>

弗朗西斯科

你可以试试这个:

<td>
  <input id="BusinessUnitNumber" type="checkbox" name="BusinessUnitNumber"
</td>

只需使用标准JSF迭代组件,而不是模糊的自定义标记。例如,


它会担心ID的唯一性。它会将行索引前置到给定的固定ID,如下所示:



您可以通过
id=“#{listRow.rowData.name}”
使其成为动态的,但这不是必需的。

你好,布鲁诺,对不起,我忘记了第一段截取的代码中的一段(重要的)代码。Francesco,当我使用jsf时,组件id区域是动态的,您将配置好的id放在类似于我发布的代码的地方。试着回答一些疑问。布鲁诺,我真的不明白你的意思,所以我知道你想要我把你的代码放进去<代码>
。我这样做了,现在我得到了“javax.servlet.ServletException:Empty id attribute is not allowed”(不允许使用空id属性)。您将得到的最接近的结果类似于searchForm:BusinessUnitNumber,因为searchForm用作容器,id将被嵌套。这可以更好地解释。
<td>
  <input id="BusinessUnitNumber" type="checkbox" name="BusinessUnitNumber"
</td>
<h:selectBooleanCheckbox id="#{listRow.rowData.name}" value="#{listRow.rowSelected}" disabled="#{detailModel.readOnly}" />