获得JodaTime JSP Taglibs工作的异常

时间:2011-02-24 15:10:12

标签: jsp spring-mvc jstl jodatime

我正在尝试让JodaTime taglib在我的Spring 3 MVC应用程序中运行。

根据website我应该能够将它放在我的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。 Servlet版本2.4在我的web.xml文件中声明。 JSP 2.1。 JSTL 1.1。

增加: 我已将joda-time-jsptag-1.0.2.jar添加到我的WEB-INF / lib目录中。我在同一个lib目录上也有joda-time-1.6.1.jar。

taglib uri是否需要有效?当我尝试在浏览器中访问http://www.joda.org/joda/time/tags时,它会重定向到sourceforge页面。也许我只需要更新的URI链接?

任何接受者?

1 个答案:

答案 0 :(得分:3)

taglib URI不一定指向真实的Web资源。 taglib URI应与类路径中存在的任何<uri>文件中的.tld声明匹配。

鉴于这一事实,有两个可能的原因:

  1. TLD文件(至少包含它的JAR文件)根本不在类路径中。
  2. TLD文件确实声明了不同的URI。
  3. 我没有JodaTime标签的经验,所以我无法从头顶判断这个(错误的)行为是否正确。我能建议的最好是自己使用一些ZIP工具提取包含TLD文件的JAR文件,然后阅读{{1}中<uri>文件中的实际 .tld JAR的文件夹。

    如果结果相同,那么您可能会遇到类路径或构建设置的问题。 JAR文件是否真正存在于正在运行的webapp环境中的(扩展)WAR文件中?


    与具体问题无关,Servlet 2.4意味着JSP 2.0,而不是JSP 2.1。此外,为什么你会使用Servlet 2.4而不是2.5甚至3.0? Glassfish 3支持Servlet 3.0。