JSF 改变了 f:selectItem 的呈现方式

JSF change how f:selectItem renders

我有一个标签 h:selectManyCheckbox,其中有一个列表循环。对于列表中的每个项目,我都需要一个复选框。不幸的是,复选框 + 标签的格式与 jsf 创建的 table 不对应。我需要在每个项目周围添加一个 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">&nbsp;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">&nbsp;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 没有拾取它。我们不能使用 table,它必须是 div 格式。我怎样才能改变 jsf 呈现这些 selectItems 的方式。我不希望在全球范围内使用它,仅适用于这里的人。我该怎么做?

我发这个问题的人发给我这个 SO 问题,我没有通过 google: Render selectManyCheckbox without HTML table 找到。让它与 <h:outputLabel><h:selectBooleanCheckbox>

一起工作