Unknown tag (c:foreach). in eclipse

49,392

Solution 1

Same thing was happening to me in Eclipse. It disappeared after I deleted the white space between <%@ and taglib that appears in your code.

So now it appears like this and the warning is gone:

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

Solution 2

What you actually need is to add the following line on top of your JSP files:

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

Also, you need to download the JSTL jar files from here and add them to WEB_INF/lib folder.

Found my answer here: https://stackoverflow.com/a/8400733/3758439

Solution 3

I was also getting this warning in eclipse. I was also getting other warnings such as:

Unknown tag (c:if) or Unknown tag (c:set) etc.

To fix these warning in eclipse, all i did was to include the following dependency in my pom file. Please note that I am using the servlet 2.5 api.

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

You seem to be using <provided> for this dependency in your pom file. Maybe that's causing your problem ?

Solution 4

the correct tag is case sensitive. (c:forEach)

Share:
49,392
Capril Aprilovich
Author by

Capril Aprilovich

Updated on July 09, 2022

Comments

  • Capril Aprilovich
    Capril Aprilovich almost 2 years

    I have jstl code and it builds by maven well... But Eclipse had compilation error "Unknown tag (c:foreach)."

    code are here:

    <%@ 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>
    

    could someone help me to avoid this promlem?

    There are full 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>
    

    `