Maven + JSTL = Erro no <c:forEach...> [RESOLVIDO]

Boa tarde amigos!

Estou desenvolvendo um projeto maven com jsp e jstl, onde o controller envia um ArrayList para o jsp mas o forEach não o percorre. Eu testei o mesmo código com um Dynamic Web Project onde funcionou perfeitamente, então suspeito que pode ser alguma coisa de errado no maven.

Estas são as dependências do pom.xml:

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

		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>
		
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>

Este é o controller:

        OrdemServicoBo bo = new OrdemServicoBo();
		List<StatusBean> lista = new ArrayList(); 
		lista = bo.novaOrdemDeServico();
		
		request.setAttribute("lista", lista);
		request.getRequestDispatcher("WEB-INF/views/teste.jsp").forward(request, response);

Este é o jsp de teste:

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<table border="1">
		<tr>
			<th>ID</th>
			<th>DESCRICAO</th>
		</tr>
		
		<c:forEach var="status" items="${lista}">
			<tr>
				<td>${status.id}</td>
				<td>${status.descricao}</td>
			</tr>
		</c:forEach>
	</table>

</body>
</html>

Acredito que posso estar errando alguma coisa no pom.xml pois utilizando os jars no Dynamic Web Project funciona perfeitamente, estou pesquisando nos fóruns, blogs e vídeos já há alguns dias e nenhum exemplo da certo.

Desde já agradeço.

tente mudar o namespace para: http://java.sun.com/jsp/jstl/core

Não funcionou, ficou na mesma.
Ao invés de mostrar o valor, ele mostra no navegador ${status.id} e ${status.descricao} dentro da table.

O forEach está repetindo os valores?

Sim, ele mostra no navegador a mesma coisa que é digitado no jsp digitado no eclipse. que são ${status.id} e ${status.descricao}

Manda o web.xml pra gente ver

Este é o web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
  	<servlet-name>OSServlet</servlet-name>
  	<display-name>OSServlet</display-name>
  	<description></description>
  	<servlet-class>br.com.startup.os.servlet.OSServlet</servlet-class>
  </servlet>
  <servlet-mapping>
  	<servlet-name>OSServlet</servlet-name>
  	<url-pattern>/OSServlet</url-pattern>
  </servlet-mapping>
</web-app>

E este o pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>br.com.startup</groupId>
	<artifactId>ordem-servico</artifactId>
	<packaging>war</packaging>
	<version>1.0.0</version>
	<name>ordem-servico Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<dependencies>

		<!-- https://mvnrepository.com/artifact/jstl/jstl -->
		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
	<build>
		<finalName>ordem-servico</finalName>
	</build>
</project>

Tente mudar seu web.xml para somente:

<?xml version = '1.0' encoding = 'ISO-8859-1'?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
                        version="3.0">

    <display-name>Archetype Created Web Application</display-name>
	
	<servlet>
		<servlet-name>OSServlet</servlet-name>
		<display-name>OSServlet</display-name>
		<description></description>
		<servlet-class>br.com.startup.os.servlet.OSServlet</servlet-class>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>OSServlet</servlet-name>
		<url-pattern>/OSServlet</url-pattern>
	</servlet-mapping>
</web-app>

E veja se funciona

Não funcionou e o web.xml ficou com um erro na linha abaixo

<display-name>OSServlet</display-name>

Erro:

cvc-complex-type.2.4.a: Invalid content was found starting with 
 element 'display-name'. One of '{"http://java.sun.com/xml/ns/
 javaee":servlet-class, "http://java.sun.com/xml/ns/javaee":jsp-file}' 
 is expected.

Mudei o web.xml da minha resposta. A treta é que o problema pode ser a forma como o seu web.xml está (a tag DOCTYPE que vc usou). Tente usar a forma como atualizei na resposta.

entendi, mas ainda não deu certo, agora o erro foi pra essa linha

<?xml version = '1.0' encoding = 'ISO-8859-1'?>

Erro:

The processing instruction target matching "[xX][mM][lL]" is not allowed.

tente colocar em aspas duplas

<?xml version="1.0" encoding="ISO-8859-1" ?>

Ou tente sem isso para ver se funciona.

Pois é, também já tentei assim, troquei as aspas e tirei os espaços que estão sobrando e o erro persiste.

Montei um projeto aqui com o código que vc postou e funcionou. Meu web.xml ficou assim:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

	<display-name>Archetype Created Web Application</display-name>

	<servlet>
		<servlet-name>OSServlet</servlet-name>
		<display-name>OSServlet</display-name>
		<description></description>
		<servlet-class>br.com.startup.os.servlet.OSServlet</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>OSServlet</servlet-name>
		<url-pattern>/OSServlet</url-pattern>
	</servlet-mapping>

</web-app>

O pom.xml ficou assim:

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>br.com.lucas</groupId>
	<artifactId>jstl-test</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>
	<name>JSTL Test</name>
	
	<properties>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.source>1.8</maven.compiler.source>
    </properties>

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

		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>

Infelizmente ainda não deu persiste o mesmo erro, eu até criei um novo projeto maven do 0. Só alterei maven.compiler.target para 1.11 pois é a versão do Java que estou utilizando.

Hmmm, agora não sei se a versão do java pode ter algo a ver com esse problema viu. A versão 11 mudou bastante.

Este taglib é diferente do padrão que eu sempre usei

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

Porém, eu não sei se isso foi alterado, faz séculos que não mexo com isso.

2 curtidas

Esta deu que não existe, mas eu utilizei o mais parecido, que foi este

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

e pelo menos percorreu o for, pois o meu objeto List tem 3 objetos bean dentro dele, mas ao invés de mostrar os dados dentro do bean, ele traz o mesmo código digitado dentro do jsp e escreveu 3 vezes. Dessa maneira
${pessoa.id} ${pessoa.nome}
${pessoa.id} ${pessoa.nome}
${pessoa.id} ${pessoa.nome}

Perai, tenta assim

<c:forEach var="status" items="${lista}">
    <tr>
        <td><c:out value="${status.id}" /></td>
        <td><c:out value="${status.descricao}" /></td>
    </tr>
</c:forEach>
1 curtida

Opa, maravilha, agora deu certo, @darlan_machado eu havia tentado desta maneira, mas acho que devo ter errado em alguma outra coisa, que não fez dar certo. Mas agora funcionou 100%.
Agradeço @darlan_machado e @Lucas_Camara pela ajuda.