如何在JSF中创建一组h:selectOneRadio?

时间:2010-04-23 05:43:01

标签: java jsf

我正在尝试创建一个h:selectOneRadio,但ui:repeat为每行提供不同的id。这是我的代码: -

                                <ui:repeat id="themes" value="#{RegisterBean.objBlogTemplateList}" var="item">

                                    <p:graphicImage  alt="#{item.templatePicName}" style="border: solid 5px white;width: 200px;height: 200px;"  value="#{app:getCommonImagePath(item.templatePicName)}"/>

                                    <h:selectOneRadio rendered="false"  value="#{RegisterBean.blogTemplateId}" layout="lineDirection"  id = "rdTemplateId">
                                        <f:selectItem itemLabel="#{item.templateName}"  itemValue="#{item.templateId}"/>
                                    </h:selectOneRadio>

                                </ui:repeat>

实际上我想创建一个单独的单选按钮,其中包含不同的selectItems,它应该来自数据库中我的表的行。我该怎么做?

3 个答案:

答案 0 :(得分:1)

听起来更像是你需要<f:selectItems>

<h:dataTable value="#{bean.items}" var="#{item}">
    <h:column>
        <h:selectOneRadio value="#{item.selectedTemplate}">
            <f:selectItems value="#{bean.availableTemplates}" />
        </h:selectOneRadio>
    </h:column>
    ...

您可以使用SelectItem[]List<SelectItem>Map<Object, String>来提供。

答案 1 :(得分:1)

您将无法使用开箱即用的JSF组件执行此操作。但是,实现自定义渲染器以完成您所追求的内容相当容易。我建议将图像URL转储到SelectItem描述字段,因为这几乎从未使用过。然后在渲染器中将此值放入IMG标记中。

我已经为选择框here编写了一些自定义渲染器 - 应该是一个相同的过程。

答案 2 :(得分:0)

<t:selectOneRadio>支持layout="spread",以便您可以从单个群组中传播各个选项按钮。