Iterator Jsp

12 respostas
cyrofranco

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()<img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/w.pngink.png?v=6" title=":wink:" class="emoji" alt=":wink:">

{

cli d = (cli)i.next();

%>

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

}

12 Respostas

von.juliano
Cara, não use esses malditos scriptlets, isso é horrível. Use JSTL, é uma prática muito melhor:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
	<c:forEach var="cliente" items="${lista}">
		<li>${cliente.nome}</li>
		<li>${cliente.email}</li>
		<li>${cliente.sexo}</li>
	</c:forEach>
</html>
No caso, lista é o seu "cli".

Blz? Flw! :thumbup:

cyrofranco

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

von.juliano

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:

cyrofranco

é 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>
von.juliano

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:

cyrofranco

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!!!

Pedrosa

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!

von.juliano
Cara, tenta assim, Servlet:
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");
E no jsp:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>   
<html>   
    <c:forEach var="bean" items="${lista}"> 
         <li>${bean.nome}</li> 
         <li>${bean.email}</li>   
         <li>${bean.sexo}</li>   
    </c:forEach>   
</html>
Que erro que aparece? Ou não está aparecendo nada?
Pedrosa

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

von.juliano

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

Flw! :thumbup:

cyrofranco

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

sabe me dizer se isso melhora a performace do projeto?

von.juliano

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:

Criado 1 de novembro de 2007
Ultima resposta 1 de nov. de 2007
Respostas 12
Participantes 3