[RESOLVIDO] Como passar uma lista de objetos de um servlet e recuperar a lista em um JSP?

11 respostas
B

Bom dia Pessoal!
Como eu faço para recuperar uma lista de objetos pasados de uma Servlet para uma JSP?
Na servlet…

RequestDispatcher rd = request.getRequestDispatcher("/resultpesqincidentes.jsp"+incidenteList);
rd.forward(request, response);

E para recuperar e exibir na minha JSP (resultpesqincidentes.jsp) a lista (incidenteList)?

Obrigado.

11 Respostas

R

Objeto objeto = (Objeto) request.getAtribute(“parametro”)

<%=objeto%>

B

eu estou tentando assim

<% 
	List<Incidente> incidentes = new ArrayList<Incidente>();
	incidentes = request.getAttribute("incidenteList");
%>
<%@ include file="cabecalho.jsp" %>
<c:forEach var="incidente" items="${incidentes}"> 
	<li>		
		${incidente.contato}
	</li>
</c:forEach>

mas o tomcat dá erro Status 404 - Acho que é página não encontrada por que como eu estou passando a lista desta forma

RequestDispatcher rd = request.getRequestDispatcher("/resultpesqincidentes.jsp"+incidenteList);
rd.forward(request, response);

ela tenta encontrar a páginaresultpesqincidentes.jsp[br.com.skafe.web…
como exibido abaixo

S

cara coloca o path completo ou faz um response.redirect…

ex: http://localhot:8080/seuprojeto/resultpesqincidentes.jsp

acho que isso funciona…

B

Dá no mesmo.
Se eu redirecionar sem passar a lista a página é exibida normalmente. Acontece que eu preciso passara a lista de uma outra forma para que o tomcat não pense que o nome da página é o nome da página mais o objeto incidentList que está sendo passado.

V

Amigo, não tenho certeza se da certo, mas tente assim:

request.setAttribute("incidenteList",incidenteList);

RequestDispatcher rd = request.getRequestDispatcher("/resultpesqincidentes.jsp"); 
rd.forward(request, response);
B

Pra recuperar estou fazendo assim:

<% 
	List<Incidente> incidentes = new ArrayList<Incidente>();
	incidentes = request.getAttribute(incidentes);
%>

mas está dando o erro:

Quando der certo eu poderei listar os Incidentes utilizando forEach? Tipo:

<c:forEach var="incidente" items="${incidentes}"> 
	<li>		
		${incidente.contato}
	</li>
</c:forEach>
V

no Servlet:

request.setAttribute("lista",incidenteList);  
 
RequestDispatcher rd = request.getRequestDispatcher("/resultpesqincidentes.jsp");  
rd.forward(request, response);

no JSP:

<jsp:useBean id="lista" class="java.util.List" scope="request"/>

<c:forEach var="incidente"items="${lista}">  
<li>  
 <c:out value="${incidente.contato}"/>
</li>  
</c:forEach>
B

v1c70r_f
Do jeito que você falou para eu fazer não funcionou, dava erro no bean pir que ele não conseguia instânciar a classe java.util.list.
Agora tentei assim:
Na servlet

request.setAttribute("lista", incidenteList);
		
		RequestDispatcher rd = request.getRequestDispatcher("/resultpesqincidentes.jsp");
		rd.forward(request, response);

No JSP

<% 
	List<Incidente> incidente = new ArrayList<Incidente>();
	incidente = (List)request.getAttribute("lista");
%>	
<%@ include file="cabecalho.jsp" %>

	<c:out value="${incidente.contato}"></c:out>

	<c:forEach var="inc" items="${incidente}"> 
		<li>		
			<c:out value="${inc.contato}"></c:out>
		</li>
	</c:forEach>
	
<%@ include file="rodape.jsp" %>

Resultado:

Me parece que o setAttribute não está funcionando.

F
<% 
	List<Incidente> incidente = new ArrayList<Incidente>();
	incidente = (List)request.getAttribute("lista");
%>

Cara, pq vc não faz assim?

<c:set var="incidente" value="requestScope.lista" />
V

Amigo, um conselho, não use o maldito scriptlet. Tente assim:
No servlet:

ArrayList list = new ArrayList();
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("5");
		
request.setAttribute("list", list);
		
RequestDispatcher rd = request.getRequestDispatcher("/teste.jsp");
rd.forward(request, response);

No JSP:

<%@page isELIgnored ="false" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<c:forEach var="item" items="${list}">
	${item}
</c:forEach>
</html>

No seu código, só mude o valor dentro do forEach.
Vê se funfa aew! Flw! :thumbup:

B

MUITO OBRIGADO AMIGO, AGORA FUNCIONOU!!!
OBRIGADO MESMO.
FICOU ASSIM O CÓDIGO:

<c:forEach var="inc" items="${lista}"> 
		<li>		
			<c:out value="${inc.contato}"></c:out>
		</li>
	</c:forEach>

RESULTADO

E SEM O MALDITO SCRIPTLET QUE EU TINHA COLOCADO POR QUE NÃO FUNCIONAVA DE JEITO NENHUM POR ISTO TENTEI DIVERSAS FORMAS.
ABRAÇOS

Criado 6 de setembro de 2007
Ultima resposta 6 de set. de 2007
Respostas 11
Participantes 6