Откройте страницу в веб-браузере, щелкните правой кнопкой мыши и Просмотреть источник . Вы видите там <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 ... имеет смысл?