Boa noite. Estou tendo problemas em imprimir uma tabela com o forEach. O desse aplicativo é um Servlet já que eu preciso iniciar a aplicação com as propriedades do produto configuradas. A idéia da app é imprimir os dados do ArrayList products através do forEach (sem precisar escrever cada propriedade individualmente). Já tentei fazer com <c:out> mas também não deu certo. Products.txt é um arquivo que contém os dados do produto divididos por um ‘|’ e estes são pegos através de um StringTokenizer na classe ProductIO.
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app 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">
<servlet>
<servlet-name>CartServlet</servlet-name>
<servlet-class>cart.CartServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ProductsServlet</servlet-name>
<servlet-class>cart.ProductsServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>CartServlet</servlet-name>
<url-pattern>/cart</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ProductsServlet</servlet-name>
<url-pattern>/products</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>products</welcome-file>
</welcome-file-list>
</web-app>
ProductsServlet.java
package cart;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.ArrayList;
import data.ProductIO;
import business.Product;
public class ProductsServlet extends HttpServlet
{
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
HttpSession session = request.getSession();
ArrayList<Product> products =
ProductIO.getProducts(
session.getServletContext().getRealPath("WEB-INF/products.txt"));
session.setAttribute("products", products);
String url = "/index.jsp";
RequestDispatcher dispatcher =
getServletContext().getRequestDispatcher(url);
dispatcher.forward(request, response);
}
// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest(request, response);
}
/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
processRequest(request, response);
}
/**
* Returns a short description of the servlet.
*/
public String getServletInfo()
{
return "Short description";
}
// </editor-fold>
}
index.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Edu's Java Servlets and JSP</title>
</head>
<body>
<h1>CD list</h1>
<table cellpadding="5" border=1>
<tr valign="bottom">
<td align="left"><b>Description</b></td>
<td align="left"><b>Price</b></td>
<td align="left"></td>
</tr>
<c:forEach var = "product" items="${products}">
<tr valign="top">
<td>product.description</td>
</tr>
</c:forEach>
<!-- o bloco acima deverá fazer o que está abaixo. -->
<!--
<tr valign="top">
<td>86 (the band) - True Life Songs and Pictures</td>
<td>$14.95</td>
<td><a href="<c:url value='/cart?productCode=8601' />">Add To Cart</a></td>
</tr>
<tr valign="top">
<td>Paddlefoot - The first CD</td>
<td>$12.95</td>
<td><a href="<c:url value='/cart?productCode=pf01' />">Add To Cart</a></td>
</tr>
<tr valign="top">
<td>Paddlefoot - The second CD</td>
<td>$14.95</td>
<td><a href="<c:url value='/cart?productCode=pf02' />">Add To Cart</a></td>
</tr>
<tr valign="top">
<td>Joe Rut - Genuine Wood Grained Finish</td>
<td>$14.95</td>
<td><a href="<c:url value='/cart?productCode=jr01' />">Add To Cart</a></td>
</tr>
-->
</table>
</body>
</html>
. Eu não sabia que era necessário fazer isso quando se chama um Servlet ao invés de um index.jsp. :mrgreen: