Использование foreach в jsf / xhtml - PullRequest
       20

Использование foreach в jsf / xhtml

1 голос
/ 16 августа 2011

Ну

Я массив dataTable, где я должен иметь несколько динамических столбцов .... Так что я использую dataTable ... Как код выше:

<rich:dataTable value="#{query.dataModel}" var="inscricao">
            <rich:column label="My List">
                <f:facet name="header">
                    <h:outputText value="My List" />
                </f:facet>
                <h:outputText value="#{query.presencas.size()}" />
            </rich:column>

                        <c:forEach var="presenca" items="${query.presencas}">
                            <rich:column label="Presença">
                <f:facet name="header">
                        <h:outputText value="Presença" />
                </f:facet>
                <h:outputText value="testing" />
                </rich:column>
                        </c:forEach>
</rich:dataTable>

Ну, моя проблема в том, что мой foreach не работает. Столбец «Мой список» показывает количество элементов, которые у меня есть в списке правильно ... Но когда я пытаюсь перебрать его в c: forEach, он не работает ...

Я уже пробовал использовать:

XMLNS: с = "http://java.sun.com/jstl/core"

и этот другой:

XMLNS: с = "http://java.sun.com/jsp/jstl/core"

Но с успехом ... Также попытался с помощью пользовательского интерфейса: повторить так:

<ui:repeat value="#{query.presencas}" var="presenca">
    <f:facet name="header">
        <h:outputText value="#{presenca.id}" />
    </f:facet>
</ui:repeat>

Но тоже не сработало.

Кто-то знает, в чем может быть проблема или какой-то другой способ перебора списка?

Я видел, что если я использую a4j: repeat INTO столбец, он распознает мой столбец внутри a4j: repeat. В противном случае, если я удалю столбец за пределами a4j: повторить, что он не работает ...

<rich:column label="Presenças" title="teste"  >
    <a4j:repeat value="#{query.presencas}" var="presenca">
         <rich:column label="Presenças" title="teste"  >
        <f:facet name="header">
            <h:outputText value="Presença" />
        </f:facet>
        <h:selectBooleanCheckbox value="#{inscricao.credenciamento}" />
         </rich:column>
    </a4j:repeat>
</rich:column>

1 Ответ

0 голосов
/ 17 августа 2011

Значение выходного текстового компонента (value="#{query.presencas.size()}") оценивается на этапе ответа визуализации. Значение обработчика тега forEach (items="${query.presencas}") оценивается по дереву сборки. Вы используете разные символы в EL, чтобы различать это ($ и #). Кажется, что query.presencas не инициализируется в дереве сборки. Вы можете проверить, что оценочный счет на дереве сборки:

<c:set var="count" value="${query.presencas.size()}"/>
<h:outputText value="#{count}"/>

Для построения динамического числа столбцов вы можете использовать c:forEach (как вы делаете), атрибут items будет оцениваться в дереве сборки (например, inscricao var недоступен, когда оценивается значение items ). Использование ui:repeat не будет работать, поскольку компоненты RichFaces (dataTable, tabPanel и другие) не справляются с этим.

...