Использование a4j: repeat или ui: repeat внутри rich: dataTable неправильно отображает переключатели - PullRequest
2 голосов
/ 30 января 2010

При использовании <c:forEach> значения элементов не подставляются должным образом. Если я использую <a4j:repeat> или <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 Ответ

3 голосов
/ 30 января 2010

Если вы уже используете JSF 2.x, вы можете просто использовать следующую конструкцию:

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

Если вы все еще используете JSF 1.x, тогда лучше использовать f:selectItems в сочетании со следующей логикой в ​​конструкторе компонента answer для его предварительного заполнения:

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

так что вы можете получить

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