【发布时间】:2015-03-26 10:26:34
【问题描述】:
我有一个标签 h:selectManyCheckbox,其中包含一个列表循环。对于列表中的每个项目,我需要一个复选框。不幸的是,复选框 + 标签的格式与 jsf 创建的表格不对应。我需要一个围绕每个项目的 div,如下所示:
<div class="form_control var_checkbox">custom
<input type="checkbox" class="checkbox" name="service" id="service_0" data-product="additional_price" data-product-add-price="100.0">
<label class="label" for="service_0">title</label>
<span class="guarantee_price">CHF 100.0</span>
</div>
但是 jsf 是这样渲染的:
<table>
<tbody>
<tr>
<td><input id="addToCart:j_id_29_2:0" type="checkbox" name="addToCart:j_id_29_2" value="0"><label for="addToCart:j_id_29_2:0"> title</label></td>
<td><input id="addToCart:j_id_29_2:1" type="checkbox" name="addToCart:j_id_29_2" value="1"><label for="addToCart:j_id_29_2:1"> titel2</label></td>
</tr>
</tbody>
</table>
这是当前生成它的代码:
<h:selectManyCheckbox value="${addToCartBean.selectedServicesIndexes}">
<c:forEach items="#{productServicesJSFBean.productServicePlusBeanKeySet}" var="productServicePlusKey">
<c:forEach items="#{productServicesJSFBean.productServicePlusBeans[productServicePlusKey]}" var="productServicePlus">
<div class="form_control var_checkbox">
<f:selectItem itemValue="${counter}" itemLabel="${productServicePlus.servicePlusDisplay.title}" >custom </f:selectItem>
</div>
<c:set var="counter" value="${counter + 1}"/>
</c:forEach>
</c:forEach>
</h:selectManyCheckbox>
我尝试手动创建复选框,但 jsf 没有选择它。我们不能使用表格,它必须是 div 格式。如何更改 jsf 呈现这些 selectItems 的方式。我不希望它在全球范围内,只对这里的人。我该怎么做?
【问题讨论】:
-
您是否尝试将带有“所需输出”的代码放在
ui:repeat中?这样,您可以使页面呈现您喜欢的任何内容。将 true/false 选择存储在后面的HashMap<object, boolean>中,并使用您的服务 ID 键入。