如何从jsf f中删除毫无价值的标签:selectItem

时间:2013-11-27 16:58:27

标签: jsf jsf-2

我将创建一个带复选框的列表。像gmail邮箱一样的东西。我在HTML h:selectManyCheckbox标记中使用f:selectItemtable。但是jsf标签,itselft创建一个表并破坏我的表单。 id怎么能对jsf标签说再创建input标签了? 以下是我的代码的和平:

<tbody>
    <h:selectManyCheckbox value="#{MemberControl.selectedUser}">
    <c:forEach items="#{MemberSearchControl.members}" var="member" varStatus="status">
    <tr>
        <td><f:selectItem itemValue="#{member.id}"></f:selectItem> </td>
        <td><span>#{member.lastName}</span></td>
        <td><span>#{member.firstName}</span></td>
        <td><span>#{member.shareCount}</span></td>
        <td><span>#{member.phone}</span></td>
    </tr>
    </c:forEach>
    </h:selectManyCheckbox>  
</tbody>  

在下面你可以看到结果:

enter image description here

您是否在正确的位置有移动复选框的解决方案? (我使用纯jsf而不是primefaces或更多) 感谢。

1 个答案:

答案 0 :(得分:1)

此行为与documented相同。你试图解决这个问题绝对没有意义。 <c:forEach><f:selectItem>应该只是<f:selectItems>,您应该为作业使用自定义渲染器。 Tomahawk之前已经为您完成了它,<t:selectManyCheckbox> layout="spread"属性设置,以及在所需位置声明的<t:checkbox>组件,允许您完全控制标记:

<!-- This piece renders _nothing_. -->
<t:selectManyCheckbox id="foo" value="#{bean.selectedItems}" layout="spread">
    <f:selectItems value="#{bean.availableItems}" />
</t:selectManyCheckbox>

<!-- You can markup those the way you want. They solely render <input>. -->
<t:checkbox for="foo" index="0" />
<t:checkbox for="foo" index="1" />
<t:checkbox for="foo" index="2" />
<t:checkbox for="foo" index="3" />
...

另一种方法是修复CSS样式。它看起来太过于过度概括tabletrtd等样式,以便应用于所有这些元素,而不仅仅是那些特定的样式类,例如table.datatable的{​​{1}}。