67

我正在使用 JSP 页面来打印一组值。我正在尝试为此使用 JSTL <c:forEach>

<c:forEach items="${objects}" var="object">
    <td>${object.name} </td>
</c:forEach>

问题是我的 JSTL taglib 声明:

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

IDE 在此行显示错误

找不到标记库描述符。

许多论坛指向旧的 Sun 站点以下载 JSTL 库。现在所有这些链接都指向 Oracle 主页,而没有指向 JSTL 二进制文件的链接。这使我相信有一种更新的方法可以实现这一目标。

4

8 回答 8

97

要解决此问题:

  1. jstl jar应该在您的类路径中。如果您使用的是maven ,请使用此处pom.xml提供的代码段在您的 jstl 中添加一个依赖项。如果您不使用maven ,请从此处下载 jstl jar并将其部署到您的.WEB-INF/lib

  2. 确保您的顶部有以下 taglib 指令jsp

     <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    
于 2012-11-28T01:54:17.863 回答
35

只需查看我们自己的JSTL wiki 页面,即可获得正确的下载链接和清晰的安装说明。

将鼠标放在您[jstl]自己放置在问题上的标签上方,直到出现一个黑框,然后单击其中的信息链接。

在此处输入图像描述

然后向下滚动到 JSTL 版本信息,直到找到 JSTL 1.2(或 1.2.1)的下载链接。

在此处输入图像描述

最后,只需将该文件完全放入 webapp 的/WEB-INF/lib.

在此处输入图像描述

这样,taglib 声明就不能再给出任何错误,并且JSTL 标记和函数应该可以正常工作。

于 2012-11-28T01:55:29.600 回答
4

我只是想分享我的经验。我对使用 maven 的 jstl 有同样的问题。我通过添加两个依赖项来解决它。

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
于 2015-01-03T16:14:54.743 回答
2

如果您使用 Tomcat 服务器,我建议您将 JSTL .jar 文件放到 Tomcat lib 文件夹中。通过这样做,您将可以自动访问所有 Web 项目中的 JSTL(当然,在 .jsp 文件中使用 taglib 声明)。

于 2014-11-11T06:34:30.927 回答
1

您可以下载Apache Standard Taglib并将 jar 包含在您的项目中。

于 2012-11-28T01:15:39.443 回答
1

这是对不使用 maven 的人的修复。您还需要将standard.jar核心标签库添加到您的 lib 文件夹中才能正常工作。适用于 jstl 1.1 版。

<%@taglib prefix="core" uri="http://java.sun.com/jsp/jstl/core"%>
于 2013-07-04T08:06:39.073 回答
0

我在使用 eclipse IDE 的 maven 项目中遇到了这个问题。我在项目的构建路径中更改了“顺序和导出”,将 Maven 依赖项放在首位,错误消失了。我猜这是因为 Eclipse IDE 最初是在加载 Maven 库之前构建我的应用程序源。

于 2013-04-24T10:16:25.010 回答
0

我在在此处输入图像描述Spring Tool Suite 3.2 上遇到了同样的问题,并在将 jstl 的版本添加到依赖项列表时手动将其更改为 1.2(从 1.1.2),并且错误消失了。

于 2013-06-24T20:22:30.403 回答