我有一些元素列表,它们生成我的<h:selectOneRadio>
项:
<h:selectOneRadio id="list#{cand.id}" value="#{mybean.value}" layout="pageDirection">
<c:forEach items="#{mybean.list}" var="c">
<f:selectItem id="first#{c.id}" itemlabel="#{c.surname}" itemValue="#{c.name}" />
</c:forEach>
</h:selectOneRadio>
我希望接下来每个元素显示<h:outputText>
的值为#{c.id}
,以便每行都是我的radioButton元素,然后是一些文本框。我该怎么做 ?
我尝试过类似的东西:
<h:selectOneRadio id="candidates1#{cand.id}" value="#{candidates.selectedCandidate1}" layout="pageDirection">
<c:forEach items="#{candidates.c1}" var="cand">
<td>
<f:selectItem id="first#{cand.id}" itemlabel="#{cand.surname}" itemValue="#{cand.name}">
<h:outputText id="c1ShortName#{cand.id}" value="#{cand.id}" />
</f:selectItem>
</td>
<td>
<h:outputText id="c1ShortName#{cand.id}" value="#{cand.id}" />
</td>
</c:forEach>
</h:selectOneRadio>
但它会在最后一个outputText之后显示所有radioButtons。
我想要类似下面的截图。当右边部分是例如ID时,它可以被加密和解密。
答案 0 :(得分:3)
只需将其放入商品标签即可。
itemlabel="#{c.id} #{c.surname}"
或者反过来说,你还不清楚。
itemlabel="#{c.surname} #{c.id}"
如果需要,您可以像这样使用HTML,您应该只注意姓氏中的XSS attack hole。
itemlabel="#{c.surname} <strong>#{c.id}<strong>" itemEscaped="false"
或者,如果您确实希望将它们放在生成的<label>
之外,那么请使用第三方组件库。这是<h:selectOneRadio>
不支持的。例如,Tomahawk的<t:selectOneRadio>
具有layout="spread"
属性。
无关,您不需要<c:forEach>
。那简单笨拙。只需使用<f:selectItems var>
即可。这是JSF 2.0以来的新版本,也许你过分关注古老的JSF 1.x目标资源。
<h:selectOneRadio ...>
<f:selectItems value="#{mybean.list}" var="c"
itemlabel="#{c.id} #{c.surname}" itemValue="#{c.name}" />
</h:selectOneRadio>