h:selectOneRadio的布局可以是水平的还是垂直的,所以有一种方法可以做一些自定义布局。例如,不是显示8个单选按钮,而是将它们显示为2行,每行4个?请在PrimeFaces p:selectOneRadio解决方案旁边提供答案,它使用CSS3导致IE8显示矩形形状的单选按钮。
答案 0 :(得分:5)
并非如此,但您可以使用Tomahawk's <t:selectOneRadio>
并将layout
属性设置为"spread"
来进行无标记的单选按钮渲染。然后,您可以使用<t:radio>
按照您想要的方式在标记中放置单个单选按钮,例如<h:panelGrid columns="4">
。
E.g。
<t:selectOneRadio id="foo" value="#{bean.selectedItem}" layout="spread">
<f:selectItems value="#{bean.availableItems}" />
</t:selectOneRadio>
<h:panelGrid columns="4">
<t:radio for="foo" index="0" />
<t:radio for="foo" index="1" />
<t:radio for="foo" index="2" />
<t:radio for="foo" index="3" />
<t:radio for="foo" index="4" />
<t:radio for="foo" index="5" />
<t:radio for="foo" index="6" />
<t:radio for="foo" index="7" />
</h:panelGrid>
或甚至当未指定单选按钮的数量时
<h:panelGrid columns="4">
<c:forEach items="#{bean.availableItems}" varStatus="loop">
<t:radio for="foo" index="#{loop.index}" />
</c:forEach>
</h:panelGrid>
(请注意,<ui:repeat>
不适合在视图渲染时运行,因此最终成为<h:panelGrid>
的单个列,您需要使用纯HTML {{1而不是)