Iterator Jsp

eu tenho o seguinte no meu servlet…


ArrayList L=new ArrayList();

While(rs.next()){
Cliente cli=new Cliente();
cli.setNome(rs.getString(“nome”));
cli.setEmail(rs.getString(“email”));
cli.setSexo(rs.getString(“sexo”));
L.add(cli);
}

request.setAttribute(“cli”,cli);
sendRedirect(“ver.jsp”);

Gostaria de enviar essa minha lista para a jsp chamada ver.jsp,
so que nao estou conseguindo… nem usar o iterator nem fazer com que o
objeto chegue no jsp alguem pode me dar uma ajuda??

eu fiz o seguinte no ver.jsp
Acho que falta resgatar o arraylist mas nao faço nem ideia de como faço

Ver.jsp

<jsp:useBean id=“cli” class=“java.util.List” scope=“request”/>

for (Iterator i = X.iterator(); i.hasNext():wink:
{
cli d = (cli)i.next();
%>


<% =d.getNome()%>
<% =d.getEmail()%>
<% =d.getSexo()%>

}

Cara, não use esses malditos scriptlets, isso é horrível. Use JSTL, é uma prática muito melhor:

[code]<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

  • ${cliente.nome}
  • ${cliente.email}
  • ${cliente.sexo}
  • [/code] No caso, lista é o seu "cli".

    Blz? Flw! :thumbup:

    mas de qualquer maneira eu vou precisar resgastar atravez do get.Attribute(“cli”);???

    Amigo, não pense em usar esses malditos <% … %> :hunf: . Dê uma estuda em JSTL, é uma forma de trabalhar com jsp muito mais eficiente e organizada. Vou explicar rapidamente o que foi feito:

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> Essa linha importa uma das funções da jstl, o core

    <c:forEach var="cliente" items="${lista}">Cria um laço de repetição, onde para cada item (var=“cliente”) da lista de objetos (items="${lista}") ele vai fazer determinadas ações. Repare que é aqui que a lista que vc setou no request é “resgatada”.

    ${cliente.nome}Isso é EL (Expression Language) no caso, está funcionando da seguinte forma: objeto.propriedade, onde ele vai buscar a propriedade nome do objeto cliente.

    </c:forEach> Termina o laço.

    Espero que tenha ajudado! Flw! :mrgreen:

    é que eu testei e nao esta funcionando
    Servlet

     Bean b = new Bean();
            ArrayList L = new ArrayList();
            
            b.setNome(request.getParameter("nome"));
            b.setEmail(request.getParameter("email"));
            b.setSexo(request.getParameter("sexo"));
            
            L.add(b);
                   
            request.setAttribute("b",b);
            response.sendRedirect("ver.jsp");            
            out.close();
        }

    Ver.jsp

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>   
    <html>   
        <c:forEach var="bean" items="${b}"> 
           <li>${bean.email}</li>   
           <li>${bean.email}</li>   
            <li>${bean.sexo}</li>   
        </c:forEach>   
    </html>  

    Repare que o forEach itera uma lista, logo vc deve jogar a lista no request. No seu código:

    request.setAttribute("b",L);

    Se vc quiser jogar somente o bean no request, pode pegar seus valores, por exemplo, da seguinte forma:

    <c:out value="${b.sexo}"></c:out>

    Blz? Qualquer duvida vai postando aew! Flw! :mrgreen:

    Caraca cara ta dificil nao consigo de jeito nenhum!!!

            Bean b = new Bean();
            ArrayList L = new ArrayList();
            
            b.setNome(request.getParameter("nome"));
            b.setEmail(request.getParameter("email"));
            b.setSexo(request.getParameter("sexo"));
            
            L.add(b);
                   
            request.setAttribute("b",L);  
            response.sendRedirect("ver.jsp");            
            out.close();
        }

    e no ver.jsp

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>   
    <html>   
        <c:forEach var="bean" items="${b}"> 
            <c:out value="${bean.nome}" />  
             <li>${bean.email}</li>   
            <li>${bean.sexo}</li>   
        </c:forEach>   
    </html>  
    
    

    desculpa minha ignorancia aí cara!!!

    O sendRedirect não funciona, para repassar dados use:

    RequestDispatcher rd;
    rd = getServletContext().getRequestDispatcher("seuJsp");
    rd.forward(request, response);

    E veja se o jar do jstl esta no classpath da sua aplicação!

    Cara, tenta assim, Servlet:

    [code]Bean b = new Bean();
    ArrayList lista = new ArrayList();

    b.setNome(“nome”);
    b.setEmail(“email”);
    b.setSexo(“sexo”);

    lista.add(b);

    request.setAttribute(“lista”, lista);
    response.sendRedirect(“ver.jsp”);
    [/code]E no jsp:

    [code]<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>

  • ${bean.nome}
  • ${bean.email}
  • ${bean.sexo}
  • [/code] Que erro que aparece? Ou não está aparecendo nada?

    Fala Juliano, o sendRedirect perde os dados do request sempre use RequestDispatcher.

    Fala Fábio, vlw mano! Nem tinha me ligado nesse detalhe! :XD: Substituindo isso deve funcionar!

    Flw! :thumbup:

    Valew galera!!! isso vai ser muito util pra mim…

    sabe me dizer se isso melhora a performace do projeto?

    Cara, uma dica p/ melhorar o seu projeto é (eu nunca canso de dizer isso) NUNCA USE SCRIPTLETS!!! O Pedrosa aew deve ser o único cara que eu conheço que odeia scriptlets mais do que eu! Lugar de código definitivamente não é na camada view. Outra coisa que pode te ajudar muito, estude os padrões MVC, isso sim vai enriquecer muito seu projeto!

    Blz? Flw! :thumbup: