使用a4j:repeat或ui:在rich内重复:dataTable不能正确渲染单选按钮

时间:2010-01-30 05:10:56

标签: jsf seam richfaces jstl

使用<c:forEach>时,项目值未正确替换。如果我在<a4j:repeat>&gt;中使用<ui:repeat><c:forEach>而不是<rich:dataTable,则单选按钮无法正常呈现。我也在http://community.jboss.org/wiki/Cantusea4jrepeattoiteratethemenuItemstabsetc

中找到了这个原因

如何解决此问题?

<f:selectItems>正在进行中,但我想向服务器发送一个选择类型

  <rich:dataTable var="answer" value="#{answers}">
    <rich:column>
      <f:selectOneRadio value="#{response.value}">
        <c:forEach items="#{answer.choices}" var="choice">
            <f:selectItem itemLabel="#{choice.value}" itemValue="#{choice.type}"/>
        </c:forEach>
     </f:selectOneRadio>
   </rich:column>
  </rich:dataTable>

1 个答案:

答案 0 :(得分:3)

如果您已经使用JSF 2.x,那么您可以使用以下构造:

<f:selectItems value="#{answer.choices}" var="choice" itemValue="#{choice.type}" itemLabel="#{choice.value}" />

如果你仍然使用JSF 1.x,那么最好是在f:selectItems bean的构造函数中使用answer和以下逻辑来预先填充它:

this.selectItems = new ArrayList<SelectItem>();
for (Choice choice : this.choices) {
    selectItems.add(new SelectItem(choice.getType(), choice.getValue()));
}

这样你最终可以

<f:selectItems value="#{answer.selectItems}" />