Passar lista do servlet para JSP

1 resposta
V

Boa tarde,
Estou com dificuldade para passar uma lista do servlet para o JSP. Já pesquisei no google e aqui mesmo no forum diversas maneiras para fazer isso, porém nenhuma deu certo.

Meu controller:

public class ReservaController extends HttpServlet {

    public ReservaController() {
        super();
    }

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        Voo voo = new Voo();
        String action = request.getParameter("verificar");
        String companhia = request.getParameter("companhia");
        String origem = request.getParameter("origem");
        String destino = request.getParameter("destino");

        voo.setCompanhia(companhia);
        voo.setOrigem(origem);
        voo.setDestino(destino);


        if (action.equals("pesquisarVoo")) {
            VooDAO vooDAO = new VooDAO();
            //List<Voo> voosDisponiveis = vooDAO.listarVoo(companhia, origem, destino);
            List<Voo> voosDisponiveis = vooDAO.listarVoo(voo);

            if (voosDisponiveis.isEmpty()) {
                response.sendRedirect("errovoo.jsp");
            } else {

                HttpSession session = request.getSession();
                session.setAttribute("voosDisponiveis", voosDisponiveis);
                response.sendRedirect("listavoo.jsp");
            }
        }


    }

Meu JSP:

<%@page import="java.util.ArrayList"%>
<%@page import="br.com.Model.Voo"%>
<%@page import="br.com.DAO.VooDAO"%>
<%@page import="java.util.List"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <link rel="stylesheet" href="css/bootstrap.min.css" />
        <link rel="stylesheet" href="css/style.css" />
        <title>title</title>
    </head>
    <body>
        <div class="container">
           <div class="row">
                <div class="col-md-12 boxAgente">
                    <div class="header">
                        <p class="reservas">Buscar vôos</p>
                        <p class="sair">Sair</p>
                    </div>
                     <%request.getAttribute("voosDisponiveis");%>
                    <c:forEach items="${voosDisponiveis}" var="voos">
                    <table width=20% height=80%>
                        <tr>
                            <td>Companhia</td>
                        </tr>
                        <tr>
                            <td>${voos.companhia}</td>
                        </tr>
                        </table>
                     </c:forEach> 
                        
               </div>   
            </div>
        </div>
    </body>
</html>
No meu controller já tentei utilizar:
RequestDispatcher rd = request.getRequestDispatcher("/listar.jsp");
        rd.forward(request, response);
No lugar do sendRedirect também.

E no JSP já tentei diversas variações para varrer a lista.

Pelo teste que eu fiz no controller, aparentemente minha lista ta cheia.

Obrigado !

1 Resposta

A

Seu problema está aqui

HttpSession session = request.getSession();  //  1****
 session.setAttribute("voosDisponiveis", voosDisponiveis);  
                
response.sendRedirect("listavoo.jsp"); // 2**

1** - Voçe está usando HttpSession não pode está errado voce tem que usar o request HttpServletRequest do servlet.
2** - Voce esta usando response troque por RequestDispatcher

Criado 9 de novembro de 2014
Ultima resposta 14 de nov. de 2014
Respostas 1
Participantes 2