Imprimir no jsp em formato tabela

15 respostas
C

Pessoal,
Preciso de uma ajuda no meu código abaixo para imprimir dados vindo de um banco em uma página jsp, acho que minha lógica está certa porém empaquei no código.

Servlet

protected void doRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
    	
    	Usuario user = new Usuario();
    	String id = request.getParameter("id");
    	String nome = request.getParameter("Nome");
    	String nivel = request.getParameter("Nivel");
    	String status = request.getParameter("Status");
    	
    	List lista = null;
    	
    	try {
			UsuarioDaoMysql uDao = new UsuarioDaoMysql();
			
			lista = uDao.listarUsuarios();
			request.setAttribute("listaUsuarios", lista);
			response.sendRedirect("Config.jsp");
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	
    	
    	
	}

Aqui que não sei como fazer:

<%@ page import = "java.util.List" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<h1>Lista de usuarios</h1>
<table>
	<tr>
		<td>id</td>
		<td>Nome</td>
		<td>Nivel</td>
		<td>Status</td>
	</tr>
<%

 List lista = (List)request.getAttribute("listaUsuarios");
 for (int i = 0; i<lista.size();i++){

	 %>
	 <tr>
	 <td> <%=lista.get(i) %> </td>
 
 </tr>
 <%
 }
 %>
 

</table>

</body>
</html>

vlw

15 Respostas

Master.Abs

Cara estou colocando um cod aqui que eu tenho em meus projetos de consultas e veja se te ajuda. Vlw

<table border="1px" align="center">
			<tr>
				<th>ID</th>
				<th>Descricao</th>
				<th>Prioridade</th>
			</tr>
			<% 
				List<Requisicao> req = new RequisicaoBD().getListaRequisicoes(request.getParameter("pkusuario")); 
				for(Requisicao requisicao : req) {
			%>
			<tr>			
				<td><%= requisicao.getPkRequisicao() %></td>
				<td><%= requisicao.getDescricao() %></td>
				<td><%= requisicao.getPrioridade() %></td>
			</tr>
			<% } %>
C

Estou tentando assim:

<h1>Lista de usuarios</h1>
<table>
	<tr>
		<td>id</td>
		<td>Nome</td>
		<td>Nivel</td>
		<td>Status</td>
	</tr>
<%

 List <Usuario> lista = (List)request.getAttribute("listaUsuarios");
 for (Usuario user: lista){
	 %>
	 <tr>
	 <td> <%= user.getIdUsuario() %> </td>
	 <td> <%= user.getNome() %> </td>
	 <td> <%= user.getNivel() %> </td>
	 <td> <%= user.getStatus() %> </td>
 
 </tr>
 <%
 }
 %>
Só que em : lista) ele está me retornando
Type mismatch: cannot convert from elemenet type Object to Usuario
williamdasflores

Tem como você postar seu método que retorna a lista?

C

Olha ae,
tenho um pacote de testes e está funcionando perfeitamente a lista.

public List<Usuario> listarUsuarios() {
	      
		   try {
           String sql = "select * from usuario order by idUsuario";
           Statement stmt = conn.createStatement();
           ResultSet rs = stmt.executeQuery(sql);
           List<Usuario> lista = new ArrayList();

           while (rs.next()) {
        	   Usuario user = new Usuario();
               user.setIdUsuario(rs.getInt(1));
               user.setNome(rs.getString(2));
               user.setNivel(rs.getString(3));
               user.setStatus(rs.getString(4));
               lista.add(user);
           }
           
           rs.close();
           return lista;
		   } catch (Exception ex) {
	            Logger.getLogger(UsuarioDaoMysql.class.getName()).log(Level.SEVERE, null, ex);
	        }
	        return null;
	}

	
}

jsp

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<h1>Lista de usuarios</h1>
<table>
	<tr>
		<td>id</td>
		<td>Nome</td>
		<td>Nivel</td>
		<td>Status</td>
	</tr>
<%
List<Usuario> usuarios = (List<Usuario>) request.getAttribute("listaUsuarios");	  
for (Usuario user: usuarios) {
	 %>
	 <tr>
	 <td> <%= user.getIdUsuario() %> </td>
	 <td> <%= user.getNome() %> </td>
	 <td> <%= user.getNivel() %> </td>
	 <td> <%= user.getStatus() %> </td>
 
 </tr>
 <%
 }
 %>
 
</table>

</body>
</html>
Erro retornado:
24: 
25: 
26: List<Usuario> usuarios = (List<Usuario>) request.getAttribute("listaUsuarios");	  
27: for (Usuario user: usuarios) {
28: 	 %>
29: 	 <tr>
30: 	 <td> <%= user.getIdUsuario() %> </td>


Stacktrace:] with root cause
java.lang.NullPointerException
	at org.apache.jsp.Config_jsp._jspService(Config_jsp.java:89)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
25/10/2011 13:11:32 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [jsp] in context with path [/SinformandoV2] threw exception [An exception occurred processing JSP page /Config.jsp at line 27
L

Caio, você já importou para seu jsp as suas classes classes?

C

Então os únicos imports que tenho no meu jsp são esses:

<%@ page import = "bean.*" %> <%@ page import = "java.util.List" %> <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>

bean é meu pacote onde fica a classe Usuario.

nel
List<Usuario> usuarios = (List<Usuario>) request.getAttribute("listaUsuarios");

“usuarios” realmente está sendo preenchido ? :slight_smile:
Se usar um foreach em uma lista nulla, gera a exceção. Se sim, verifique se o seu objeto usuario não está nulo.

Abraços.

williamdasflores

CaioNascimento,

Tenta colocar seu código JSP dentro de um if.

if(request.getAttributte("listarUsuarios") != null)
{
   .......
}
C

Fiz um if bem tosco só pra saber se essa lista estava chegando:

if(request.getAttribute("listaUsuarios") != null){ JOptionPane.showMessageDialog(null,"Tem lista"); }else{ JOptionPane.showMessageDialog(null,"Não tem lista"); } %>

Ele está me retornando que não tem lista, estranho pq acho que não achei o erro no meu servlet.

nel

CaioNascimento:
Fiz um if bem tosco só pra saber se essa lista estava chegando:

if(request.getAttribute("listaUsuarios") != null){ JOptionPane.showMessageDialog(null,"Tem lista"); }else{ JOptionPane.showMessageDialog(null,"Não tem lista"); } %>

Ele está me retornando que não tem lista, estranho pq acho que não achei o erro no meu servlet.

Verifique se o seu DAO está retornando a Lista corretamente :slight_smile:

C

Retorna os dados sem erro algum:

public static void main(String[] args) throws ClassNotFoundException, SQLException {
		// TODO Auto-generated method stub
		Usuario user = new Usuario();
		UsuarioDaoMysql uDao = new UsuarioDaoMysql();
		
		List<Usuario> lista = uDao.listarUsuarios();
		for ( Usuario u: lista){
			System.out.println(u.getIdUsuario()+"-"+u.getNome() +"-" + u.getNivel()+"-"+u.getStatus());
		}

Será que o erro pode estar no servlet?

C

até aqui ele ainda funciona:

Fiz um teste no servlet ele está printando os nomes

protected void doRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
    	
    	Usuario user = new Usuario();
    	String id = request.getParameter("id");
    	String nome = request.getParameter("Nome");
    	String nivel = request.getParameter("Nivel");
    	String status = request.getParameter("Status");
    	
    	
    	try {
    		List <Usuario> lista = new ArrayList<Usuario>();
			UsuarioDaoMysql uDao = new UsuarioDaoMysql();
			
			lista = uDao.listarUsuarios();
			
			for ( Usuario u: lista){
				System.out.println(u.getIdUsuario()+"-"+u.getNome() +"-" + u.getNivel()+"-"+u.getStatus());
			}
			
			
			request.setAttribute("listaUsuarios", lista);
			response.sendRedirect("Config.jsp");
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
E

acho que o problema está em:

response.sendRedirect("Config.jsp");

Acho que nesse caso vc devia usar um forward né?

williamdasflores

CaioNascimento,

Como nosso amigo “evefuji” disse tente usar o forward se você não conseguir tente usar o RequestDispatcher, porque não estou vendo nada de errado. Tenta fazer essas alterações aí, qualquer coisa posta aí de novo :smiley:

C

Meus caros,
Utilizei o RequestDispatcher, e funcionou!

Obrigado a todos!

Criado 25 de outubro de 2011
Ultima resposta 26 de out. de 2011
Respostas 15
Participantes 6