关于Spring MVC:异常使JodaTime JSP Taglibs工作

Exception getting JodaTime JSP Taglibs working

我试图在我的Spring 3 MVC应用程序中使用JodaTime taglib。

在每个网站上,我都应该可以将其放在我的jsp页面中,并且应该可以使用。

1
2
3
<%@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" />

但是我遇到了这个异常:

1
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链接?

有没有人?


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

鉴于此事实,可能有两个原因:

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

    如果结果相同,则可能是类路径或构建设置有问题。运行中的webapp环境上的(扩展)WAR文件中确实存在JAR文件吗?

    与具体问题无关,Servlet 2.4隐含了JSP 2.0,而不是JSP 2.1。此外,为什么还要使用Servlet 2.4而不是2.5甚至3.0? Glassfish 3支持Servlet 3.0。