我正在尝试创建一个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,它应该来自数据库中我的表的行。我该怎么做?
答案 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"
,以便您可以从单个群组中传播各个选项按钮。