Как отобразить что-то рядом с элементом h:selectOneRadio?

У меня есть список элементов, который генерирует мой <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>

Но он отображает все радио-кнопки после последнего выходного текста.

Я хочу что-то вроде скриншота ниже. Например, если правая часть - это идентификаторы, она может быть зашифрована и расшифрована.

1 ответ

Решение

Просто поместите его в ярлык товара.

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> затем используйте стороннюю библиотеку компонентов. Именно это не поддерживается <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>

Смотрите также:

Другие вопросы по тегам