未知标签(c:foreach)。在日食

时间:2014-03-28 09:03:52

标签: java eclipse maven jstl

我有jstl代码,它由maven构建好......但Eclipse有编译错误“Unknown tag(c:foreach)。”

代码在这里:

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib  uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <ul>
        <c:forEach items="${listOfMyFriends}" var="friend">
        <c:out value="${friend}"></c:out>
        </c:forEach>

    </ul>
</body>
</html>
有人可以帮助我避免这个问题吗?

有完整的pom:` http://maven.apache.org/xsd/maven-4.0.0.xsd">     4.0.0

<groupId>com.godzevych</groupId>
<artifactId>springInActionMVCTemplate</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<name>springInActionMVCTemplate</name>
<url>http://maven.apache.org</url>

<properties>
    <java.version>1.6</java.version>
    <spring.version>3.1.0.RELEASE</spring.version>
    <cglib.version>2.2.2</cglib.version>
</properties>

<dependencies>
    <!-- Spring core & mvc -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-test</artifactId>
        <version>${spring.version}</version>
        <type>jar</type>
        <scope>test</scope>
    </dependency>

    <!-- CGLib for @Configuration -->
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib-nodep</artifactId>
        <version>${cglib.version}</version>
        <scope>runtime</scope>
    </dependency>


    <!-- Servlet Spec -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.5</version>
        <scope>provided</scope>
    </dependency>

    <!-- JSTL -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
        <scope>provided</scope>
    </dependency>

    <!-- JSR 330 -->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>6.0</version>
    </dependency>

</dependencies>

<repositories>
    <repository>
        <id>springsource-milestones</id>
        <name>SpringSource Milestones Proxy</name>
        <url>https://oss.sonatype.org/content/repositories/springsource-milestones</url>
    </repository>
</repositories>

<build>
    <finalName>springInActionMVCTemplate</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

`

4 个答案:

答案 0 :(得分:16)

Eclipse中发生了同样的事情。删除代码中出现的&lt;%@和taglib之间的空格后,它消失了。

所以现在它看起来像这样,警告消失了:

答案 1 :(得分:12)

您实际需要的是在JSP文件之上添加以下行:

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

此外,您需要从here下载JSTL jar文件并将其添加到WEB_INF/lib文件夹。

在这里找到我的答案: https://stackoverflow.com/a/8400733/3758439

答案 2 :(得分:4)

我也在日食中得到了这个警告。我还得到了其他警告,例如:

  

未知标记(c:if)或未知标记(c:set)等。

要在eclipse中修复这些警告,我所做的就是在我的pom文件中包含以下依赖项。请注意,我使用的是servlet 2.5 api。

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

您似乎在pom文件中使用<provided>来表示此依赖项。也许这会导致你的问题?

答案 3 :(得分:0)

正确的标签区分大小写。 (C:的forEach)