Исключение, заставляющее JodaTime JSP Taglibs работать - PullRequest
4 голосов
/ 24 февраля 2011

Я пытаюсь заставить taglib JodaTime работать в моем приложении Spring 3 MVC.

По веб-сайту Я должен иметь возможность разместить это на своей странице JSP, и это должно работать.

<%@taglib prefix="joda" uri="http://www.joda.org/joda/time/tags" %>
<% pageContext.setAttribute("now", new org.joda.time.DateTime()); %>
<joda:format value="${now}" style="SM" />

Однако я получаю это исключение:

org.apache.jasper.JasperException: /WEB-INF/jsp/reports/../taglibs.jspf(7,66) PWC6188: The absolute uri: http://www.joda.org/joda/time/tags cannot be resolved in either web.xml or the jar files deployed with this application

Я использую Glassfish 3.0.1.Сервлет версии 2.4 объявлен в моем файле web.xml.JSP 2.1.JSTL 1.1.

Добавление: я добавил joda-time-jsptag-1.0.2.jar в свой каталог WEB-INF / lib.У меня также есть joda-time-1.6.1.jar в той же директории lib.

Должен ли taglib uri быть действительным?Когда я пытаюсь зайти в браузер http://www.joda.org/joda/time/tags, он перенаправляет на страницу sourceforge.Может мне просто нужна обновленная ссылка URI?

Любой берущий?

1 Ответ

3 голосов
/ 24 февраля 2011

URI taglib не обязательно указывает на реальный веб-ресурс. URI taglib должен соответствовать объявлению <uri> в любом из файлов .tld, присутствующих в пути к классам.

Учитывая этот факт, возможны две причины:

  1. Файл TLD (по крайней мере, файл JAR, содержащий его) вообще не находится в пути к классам.
  2. Файл TLD объявил другой URI.

У меня нет опыта работы с тегами JodaTime, поэтому я не могу понять, правильно ли это (неправильное) поведение. Лучшее, что я могу предложить, - это извлечь файл JAR, содержащий файлы TLD, используя какой-либо инструмент ZIP, а затем прочитать фактический <uri> в файле .tld в папке META-INF JAR.

Если окажется, что это то же самое, то, скорее всего, у вас проблема с настройками classpath или build. Действительно ли файлы JAR присутствуют в (расширенном) файле WAR в работающей среде веб-приложения?


Сервлет 2.4, не связанный с конкретной проблемой, подразумевает JSP 2.0, а не JSP 2.1. Кроме того, почему вы используете Servlet 2.4 вместо 2.5 или даже 3.0? Glassfish 3 поддерживает Servlet 3.0.

...