Alguém sabe me dizer como posso fazer a mesma coisa que o código abaixo faz de uma maneira mais eficiente?
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@page import="java.util.List" %>
<%@page import="modelo.Produto" %>
<% List<Produto> produtos = (List<Produto>)request.getAttribute("listaprod"); %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<table>
<tr>
<td>Produto</td> <td>Quantidade</td>
</tr>
<tr> <%for(Produto p : produtos) { %>
<td><%=p.getNome()%></td>
<td><%=p.getQuant()%></td>
</tr>
<% } %>
</table>
</body>
</html>
[code] <%@ page language=“java” contentType=“text/html; charset=UTF-8” pageEncoding=“UTF-8”%>
<%@ taglib uri=“http://java.sun.com/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=UTF-8”>
<title>Insert title here</title>
</head>
<body>
<table>
<tr>
<td>Produto</td> <td>Quantidade</td>
</tr>
<c:forEach var="produto" items="${produtos}">
<tr>
<td>${produto.nome}</td>
<td>${produto.quant}</td>
</tr>
</c:forEach>
</table>
</body>
</html>[/code]
Infelizmente não funcionou. Não entendi como o forEach pega a lista que vem do request.
Qual o erro que aconteceu?
Para passar a lista, usei ‘items’ da tag de JSTL.
Então usei Expression Language (procure estudar sobre isso) para pegar o que vem epla requisição. Como eu só coloquei o nome, automaticamente ele procura na sessão, requisição, aplicação… até encontrar a variável com aquele nome. Então eu simplesmente mando pegar as propriedades do bean em ${produto.nome}, por exemplo. Para isso funcionar, deve haver um getNome().
Obrigado pela atenção Fernando. No servlet tenho o codigo:
if (cmd.equals("listaprod")) {
List<Produto> lista = null;
ProdutoDAO pDAO = new ProdutoDAO();
lista = pDAO.lista();
request.setAttribute("listaprod", lista);
RequestDispatcher rd = request.getRequestDispatcher("produtos.jsp");
rd.forward(request, response);
for (Produto p: lista) {
System.out.println(p.getNome());
}
E no JSP está assim:
<table>
<tr>
<td>Produto</td> <td>Quantidade</td>
</tr>
<c:forEach var="produto" items="listaprod">
<tr>
<td>${produto.getNome}</td>
<td>${produto.getQuant}</td>
</tr>
</c:forEach>
</table>
Pode me dizer o que está faltando?
[quote=ressacaafu]Obrigado pela atenção Fernando. No servlet tenho o codigo:
if (cmd.equals("listaprod")) {
List<Produto> lista = null;
ProdutoDAO pDAO = new ProdutoDAO();
lista = pDAO.lista();
request.setAttribute("listaprod", lista);
RequestDispatcher rd = request.getRequestDispatcher("produtos.jsp");
rd.forward(request, response);
for (Produto p: lista) {
System.out.println(p.getNome());
}
E no JSP está assim:
<table>
<tr>
<td>Produto</td> <td>Quantidade</td>
</tr>
<c:forEach var="produto" items="listaprod">
<tr>
<td>${produto.getNome}</td>
<td>${produto.getQuant}</td>
</tr>
</c:forEach>
</table>
Pode me dizer o que está faltando?[/quote]
O erro está no ‘items’ e nas EL de produto. Troca items=“listaprod” por items="${listaprod}", ${produto.getNome} por ${produto.nome} e ${produto.getQuant} por ${produto.quant}.
Você só precisa colocar o nome da variável, que o EL detecta o gettter.
Qualquer coisa, pode postar novamente. 
Devo estar errando em algum detalhe, sai o seguinte erro: HTTP Status 500,
org.apache.jasper.JasperException: /produtos.jsp(19,7) According to TLD or attribute directive in tag file, attribute items does not accept any expressions
Olha esse site aqui: http://lkamal.blogspot.com/2007/03/jstl-according-to-tld-or-attribute.html
Basicamente, há uma incompatibilidade entre seu JSTL e sua versão de Servlet e JSP.
Azar de principiante hehe. Valeu pelas dicas.
E agora, o que faço? Preciso atualizar os jars do JSTL? Esse é o cabeçalho do meu web.xml:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
Pelas versões do seu cabeçalho do web.xml, acho que você precisa atualizar o JSTL mesmo. E você está com as 2 libs?
Tenho essas:
jstl.jar
jstl-api-1.2.jar
jstl-impl-1.2.jar
sabe quais devo usar?
Bom… que eu saiba, geralmente eh uma jstl-1.2.jar e uma standard.jar.
Ai parece estar faltando a standard.jar.
No NetBeans tá funcionando \o/.
auwehwauehwaeuwa
O NetBeans importa automaticamente as bibliotecas.
Copia jstl.jar e standard.jar que tem no seu netbeans pro Eclipse, q funciona também.