1

我有一些元素列表,可以生成我的<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>为 value #{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 之后显示所有单选按钮。

我想要类似下面的截图。当正确的部分是例如 ID 时,它可以被加密和解密。

在此处输入图像描述

4

1 回答 1

3

只需将其放在项目标签中即可。

itemlabel="#{c.id} #{c.surname}"

或者反过来说,你并不清楚。

itemlabel="#{c.surname} #{c.id}"

如有必要,您可以像这样使用 HTML,您应该只注意姓氏中的XSS 攻击漏洞

itemlabel="#{c.surname} &lt;strong&gt;#{c.id}&lt;strong&gt;" itemEscaped="false"

或者,如果您真的想让它们在生成的之外<label>,那么使用 3rd 方组件库。即不支持<h:selectOneRadio>。例如,战斧<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>

也可以看看:

于 2013-01-25T20:16:08.917 回答