Подтвердить что ты не робот

Разница между пространствами JSTL xmlns между JSF 1.2 и JSF 2.x?

У меня есть веб-приложение на основе JSF 1.2, с которого я скопировал импорт JSTL

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

Вы также можете найти этот импорт во многих местах в Интернете. Я не помню, работало ли это в моем предыдущем веб-проекте или нет, в любом случае, это не работает в моем текущем веб-приложении на основе JSF 2.0. Я получил предупреждение от контейнера, говоря:

Предупреждение. Эта страница требует пространства имен XML http://java.sun.com/jstl/core, объявленного с префиксом c, но для этого пространства имен не существует taglibrary.

Затем я изменил импорт на

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

... который удалил все головные боли с помощью <c:forEach> в веб-приложении на основе JSF/RichFaces.

Какой трюк здесь? Были ли внесены какие-либо изменения в URL-адрес импорта JSTL с JSF 1.2 до 2.x? Или первая строка вообще неправильна (в JSF)? Какая разница между двумя?

4b9b3361

Ответ 1

Посмотрите нашу страницу Wiki на JSTL: fooobar.com/tags/jstl/... Вы можете получить эту страницу всякий раз, когда вы наводите под вопросом, пока не появится черный ящик, а затем нажмите ссылку с информацией.

Верно, что Facelets 1.x и 2.x используют разные пространства имен для библиотеки тегов JSTL. Это было меньше или больше пространства имен ошибка в Facelets 1.x и была исправлена ​​для Facelets 2.x.

  • Настоящий JTL 1.0 taglib использует URI http://java.sun.com/jstl/core.
  • Настоящий JSTL 1.1/1.2 taglib использует URI http://java.sun.com/jsp/jstl/core.
  • Facelets 1.x использует URI http://java.sun.com/jstl/core.
  • Facelets 2.x использует URI http://java.sun.com/jsp/jstl/core.
  • Facelets 2.2+ использует URI http://xmlns.jcp.org/jsp/jstl/core.

Вы можете найти все теги Facelets 2.x в Документация библиотеки тегов Facelets. Лицевые стороны не поставляются с полным тегом, установленным в качестве реального JSTL taglib. Только несколько из <c:xxx> и полный набор <fn:xxx> копируются в Facelets. Теги <fmt:xxx>, <sql:xxx> и <xml:xxx> не переносятся в Facelets.

Ответ 2

JSTL теперь является частью EL.
Это не зависит от реализации JSF, но зависит от того, какая версия сервлета соответствует вашему контейнеру сервисов.
Таким образом, это должны быть разные серверы или разные версии одного и того же сервера.


Короткий ответ от 2.4 вверх, в котором находится jboss 7. Если вы пройдете через JSTL doc здесь, вы узнаете каким-либо образом.
Другое мудрое здесь хорошее ссылка.
И еще один здесь от BalusC.