c: foreach возвращает только одно пустое значение - PullRequest
1 голос
/ 18 января 2012

Я использую JSF 2 и мне нужен c: foreach в некоторых целях.Но независимо от того, насколько большой мой список, c: foreach зацикливается только один раз, возвращая пустое значение.Я перепробовал все, я даже изолировал c: foreach в отдельном .xhtml, но он все равно дает тот же результат.Если вам нужен какой-то фрагмент кода, пожалуйста, спросите, но я бы хотел, чтобы c: foreach работал, по крайней мере, в отдельном .xhtml, и я полагаю, что он будет работать и в моем коде.

1 Ответ

5 голосов
/ 18 января 2012

Откройте страницу в веб-браузере, щелкните правой кнопкой мыши и Просмотреть источник . Вы видите там <c:forEach> простой ваниль, верно? Это не было разобрано и выполнено вообще? Это неправильно. Вы должны убедиться, что вы объявили базовую taglib JSTL в пространстве имен XML, чтобы ее можно было проанализировать и выполнить Facelets. Правильное объявление пространства имен XML выглядит следующим образом:

xmlns:c="http://java.sun.com/jsp/jstl/core"

Если вы уже сделали это, то это может означать только то, что вы запускаете веб-приложение на сервере, на котором не установлена ​​предустановленная JSTL. Полноценные серверы приложений Java EE, такие как Glassfish и JBoss AS, уже поставляются в комплекте с JSTL, а простые контейнеры сервлетов, такие как Tomcat и Jetty - нет. Вам нужно скачать и поместить библиотеку JSTL в /WEB-INF/lib веб-приложения или, возможно, даже в собственную папку /lib сервера.

Смотри также:


Не связано с конкретной проблемой, хорошо ли вы знаете, что <c:forEach> - это тег времени построения представления, а не тег времени рендеринга представления? Если вы на самом деле ищете последнее, вам следует использовать собственный тег Facelets <ui:repeat>. См. Также JSTL в JSF2 Facelets ... имеет смысл?

...