Ajuda com jsp

12 respostas
fabiodurgante
seguinte tenho o metodo no servlet
 if (act.equals("Consultar_Cliente")) {
     
         String nome_cliente = request.getParameter("nome_cliente");

                    
                ClienteDao cli = new ClienteDao();
                Cliente cliente = new Cliente();
                
                List<Cliente> lista = cli.listar(nome_cliente);
      
       
            
        session.setAttribute("alterar_cliente", "false");

      response.sendRedirect("Cliente_Consultar.jsp?lista="+lista+" ");           
   

 }

nome_cliente  eu pego no form do jsp e passo pro servlet esse metodo listar faz um select pelo nome do cliente e me retorna um List<Cliente> que eu coloquei o nome lista

mas quando eu vou para outro jsp Cliente_Consultar.jsp passo a lista da consulta

e la no Cliente_Consultar.jsp faco o seguinte

  List<Cliente> lista = request.getAttribute("lista");  incompatible type da erro aqui depois faço o for pra listar a lista  for(Cliente pro:lista) {


mas o problema é que eu nao consigo passar do servlet a minha lista para o jsp Cliente_Consultar.jsp alguem ajuda ai

12 Respostas

Rafael_Carneiro

O método getAttribute(String str) retorna um Object, portanto, você deve fazer o casting na linha abaixo para List.

List<Cliente> lista = request.getAttribute("lista");
bsl.lacerda

Tenta não usar Scriptlet.
Usa TagLib.

Dá uma pesquisada por <c:foreach>

http://www.google.com.br/search?hl=pt-BR&rlz=1C1CHMG_pt-BRBR291BR305&q=Tutorial+JSTL&btnG=Pesquisar&meta=

fabiodurgante

casting na linha abaixo para List.

como que eu faço isso cara???

Rafael_Carneiro

fabiodurgante:
casting na linha abaixo para List.

como que eu faço isso cara???

List<Cliente> lista = (List<Cliente>) request.getAttribute("lista");
bsl.lacerda
List<Cliente> lista = (List<Cliente>) request.getAttribute("lista");

Certo?

fabiodurgante

deu certo valeu ai pela ajuda so uma coisa

no meu for

List lista = (List) request.getAttribute(“lista”);

for(Cliente cli:lista) {

<%out.print(cli.getid_Cliente().toString());%>

<%out.print(cli.getNome_Cliente());%>

<%out.print(cli.getEstado_Cliente());%>

}

no for ele nao escreve nada
e la em cima no endereco no internet explorer aparece a lista assim eu so tenho 3 registros mesmo

http://localhost:8084/TESTEWEB/Cliente_Consultar.jsp?lista=[modelo.Cliente@19ab00e,%20modelo.Cliente@9c87c1,%20modelo.Cliente@94b318]

bsl.lacerda

Tenta assim sem scriptlet

<c:foreach var="cli" items="${lista}">
	Nome: ${cli.nome_Cliente()}
</c:foreach>
Rafael_Carneiro

Se você deseja passar a lista via URL para outra página JSP, você deve criar um loop no seu servlet e adicionar as informações de cada cliente, e não passar a lista diretamente na URL, por isso que você está vendo a URL “maluca”. Na verdade, as informações na URL representam os números hash de cada objeto Cliente (no caso três objetos) que estão na sua lista.

Dicas:

[list]coloque sempre objetos como atributos da requisição[/list]

[list]não utilize o método sendRedirect da interface HttpServletResponse, prefira utilizar o método forward() do objeto RequestDispatcher (obtenha esse objeto através do método getRequestDispatcher da interface HttpServletRequest).[/list]

Ficaria assim:

Servlet

request.setAttribute("lista",lista);

request.getRequestDispatcher("suaJSP.jsp").forward(request,response);
fabiodurgante

nao da aparece assim

a funcao nome_cliente deve ser usada com um prefixo quando o nome defealut nao é especificado

bsl.lacerda

Foi mal.
Sem parenteses no get.

<c:foreach var="cli" items="${lista}">  
    Nome: ${cli.nome_Cliente}  
</c:foreach>
fabiodurgante
DEU CERTO VALEU AIIIIIIIIII

minha servlet

 if (act.equals("Consultar_Cliente")) {
     
         String nome_cliente = request.getParameter("nome_cliente");
                    
                ClienteDao cli = new ClienteDao();
                Cliente cliente = new Cliente();        
                
                List<Cliente> lista = cli.listar(nome_cliente);
                
       session.setAttribute("alterar_cliente", "false");
       
       
       for(Cliente clien:lista) { 
       request.setAttribute("lista",lista);   
request.getRequestDispatcher("Cliente_Consultar.jsp").forward(request,response);  
       }


e na pagina Consultar_Cliente
 List<Cliente> lista = (List<Cliente>) request.getAttribute("lista"); 

for(Cliente cli:lista) {  
                         <%out.print(cli.getid_Cliente().toString());%>   
               <%out.print(cli.getNome_Cliente().toString());%>   
               <%out.print(cli.getEstado_Cliente().toString());%>   
               <%out.print(cli.getCpf_Cliente().toString());%>   
}

VALEU AI A TODOS pela AJUDA MUITO OBRIGADO!!!!!!!!!!!!!!!!!!!


o segredo da coisa é o seguinte que disse o Rafael Carneiro 

você deve criar um loop no seu servlet e adicionar as informações de cada cliente, e não passar a lista diretamente na URL,  

VALEUUUUUUUUUUU
Rafael_Carneiro

Só uma observação:

for(Cliente clien:lista) { request.setAttribute("lista",lista); request.getRequestDispatcher("Cliente_Consultar.jsp").forward(request,response); }

Fazendo o código acima, você terá apenas o último cliente dessa laço como atributo da requisição na sua página JSP. Portanto, você verá apenas o último cliente.

Faça assim:

request.setAttribute("lista",lista);     
 request.getRequestDispatcher("Cliente_Consultar.jsp").forward(request,response);
Criado 29 de dezembro de 2008
Ultima resposta 29 de dez. de 2008
Respostas 12
Participantes 3