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
Ajuda com jsp
12 Respostas
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");
Tenta não usar Scriptlet.
Usa TagLib.
Dá uma pesquisada por <c:foreach>
casting na linha abaixo para List.
como que eu faço isso cara???
casting na linha abaixo para List.como que eu faço isso cara???
List<Cliente> lista = (List<Cliente>) request.getAttribute("lista");
List<Cliente> lista = (List<Cliente>) request.getAttribute("lista");
Certo?
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
Tenta assim sem scriptlet
<c:foreach var="cli" items="${lista}">
Nome: ${cli.nome_Cliente()}
</c:foreach>
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);
nao da aparece assim
a funcao nome_cliente deve ser usada com um prefixo quando o nome defealut nao é especificado
Foi mal.
Sem parenteses no get.
<c:foreach var="cli" items="${lista}">
Nome: ${cli.nome_Cliente}
</c:foreach>
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
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);