JSTL taglib URI 已过时?

2022-09-03 16:04:46

我一直在查看Spring MVC教程,并从那里复制了这个小的JSP代码:

<%@ page session="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<html>
    <head><title>Training, Inc.</title></head>
    <body>
        <h2><c:out value="${message}" /></h2>
    </body>
</html>

为消息设置了一个字符串,c:out 标记只是按字面意思打印

${消息}

我一直撞到头上,直到我想起了我之前遇到的一个问题,并将taglib URI更改为:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

这解决了我的小问题

前段时间,我在XSLT转换方面遇到了类似的问题,但在这种情况下,我必须从 http://java.sun.com/jstl/xml 更改为 http://java.sun.com/jsp/jstl/xml

根据这个链接,我的弹簧示例应该像我从弹簧教程粘贴一样工作

问题是:你们中的任何一个人都知道所有这些taglib URI混淆记录在哪里?为什么在某些情况下,我从 http://java.sun.com/jsp/jstl 那里得到了最后个版本,而在其他情况下,我从 http://java.sun.com/jstl


答案 1

是的,众所周知,taglib 的 URI 在 JSTL 版本 1.0 和 1.1 之间发生了变化。如果您碰巧获得使用旧标准的示例,并尝试将它们与新的taglib JAR一起使用,那么您将遇到此问题。


答案 2

如果您仍然收到此错误,但您正在手工制作pom,则可能错过了标准库。例如,我错过了

    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>${jstl.version}</version>
    </dependency>

推荐