我有
<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>
(其中wai:collectionIter是自定义标签)
但相应的html代码看起来像
<td>
<c:set target="javax.faces.component.html.HtmlSelectBooleanCheckbox@10cd160" property="id" value="BusinessUnitNumber"></c:set><input type="checkbox" name="searchForm:j_idt100" /
</td>
我必须说c:set target =“#{component}”来自我在别处找到的一个例子......
由于我不是JSF专家,并且假设它是正确的,我希望得到的html是这样的:
<td>
<input id="BusinessUnitNumber" type="checkbox" name="BusinessUnitNumber"
</td>
是完全错误还是我错过了其他什么?
感谢您的帮助。
弗朗西斯
答案 0 :(得分:2)
只使用标准的JSF迭代组件而不是模糊的自定义标记。例如。 <ui:repeat>
:
<ui:repeat value="#{listModel.listRows}" var="listRow" varStatus="loop">
<tr class="#{loop.even ? 'even' : 'odd'}">
<td>
<h:selectBooleanCheckbox
id="foo"
value="#{listRow.rowSelected}"
disabled="#{detailModel.readOnly}" />
</td>
<ui:insert name="columnData"/>
</tr>
</ui:repeat>
它会担心ID的唯一性。它将行索引添加到给定的固定ID,如下所示:
<tr class="odd"><td><input type="checkbox" name="formid:repeatid:0:foo" id="formid:repeatid:0:foo" /></td></tr>
<tr class="even"><td><input type="checkbox" name="formid:repeatid:1:foo" id="formid:repeatid:1:foo" /></td></tr>
<tr class="odd"><td><input type="checkbox" name="formid:repeatid:2:foo" id="formid:repeatid:2:foo" /></td></tr>
你可以通过id="#{listRow.rowData.name}"
使其动态化,但这不是必需的。
答案 1 :(得分:0)
弗朗西斯
你试试这个:
<h:selectBooleanCheckbox id="#{listRow.rowData.name}" value="#{listRow.rowSelected}" disabled="#{detailModel.readOnly}" />