Использование JSTL с JSF 1.1 - PullRequest
2 голосов
/ 13 мая 2011

Я пытаюсь использовать JSTL с JSF 1.1. Следующий код вызывает у меня проблему:

<c:forEach var="key" items="${names}">
    <h:column>
        <f:facet name="header">
            <h:outputText value="#{key}"/>
        </f:facet>
        <h:outputText value="#{key}"/>
    </h:column>
</c:forEach>

, где names - это список String . Имена являются ключом карты, содержащейся в данных, отображаемых в таблице, т. Е. Я пытаюсь сделать что-то вроде этого:

<h:outputText value="#{data.fooMap[key]}"/>

Этот код отлично работает за пределами h: dataTable (итерация и отображение имен), но когда я помещаю его в таблицу, ничего не отображается.

Кто-нибудь знает, как решить эту проблему?
Есть ли тег JSF, который может перебирать список внутри h: dataTable ?

Любая помощь будет оценена!

1 Ответ

5 голосов
/ 13 мая 2011

JSF и JSTL не работают синхронно, как вы ожидаете от кодирования.Во время построения представления это JSTL, который сначала выполняется сверху вниз, в результате получается чистое дерево компонентов JSF без каких-либо тегов JSTL.Затем во время рендеринга представления это JSF, который снова работает сверху вниз для создания HTML.

Если ${names} определен как var из <h:dataTable>, то он просто недоступен, когда JSTL выполняет свою работу.

Вам нужно перейти к другому решению (динамически заполняется в базовом компоненте), или принять стороннюю библиотеку компонентов, которая позволяет генерировать динамические столбцы.Например, RichFaces имеет компонент rich:columns, который предназначен именно для этой цели.

...