Различия в пространстве имен JSTL xmlns между JSF 1.2 и JSF 2.x? - PullRequest
20 голосов
/ 29 сентября 2011

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

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

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

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

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

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

..., что позволило устранить все головные боли при использовании <c:forEach> в веб-приложении на основе JSF / RichFaces.

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

Ответы [ 2 ]

42 голосов
/ 29 сентября 2011

Посетите нашу вики-страницу JSTL: https://stackoverflow.com/tags/jstl/info. Такую страницу можно получить, когда вы наводите указатель под вопросом до тех пор, пока не появится черный ящик, а затем нажмите info link.

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

  • Реальная библиотека тегов JSTL 1.0 использует URI http://java.sun.com/jstl/core.
  • Реальная библиотека тегов JSTL 1.1 / 1.2 использует 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 .Facelets не поставляются с полным тегом, установленным как real JSTL taglib .Только некоторые из <c:xxx> и полный набор <fn:xxx> копируются в Facelets.Теги <fmt:xxx>, <sql:xxx> и <xml:xxx> не переносятся в Facelets.

3 голосов
/ 29 сентября 2011

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


Короткий ответ от 2,4 и выше, что и JBoss 7.
Если вы пройдете JSTL документ здесь вы найдете любой способ.
Другой мудрый здесь хороший ссылка .
И еще один здесь от BalusC.

...