Dúvida no retorno de um método Collection

6 respostas
betonit

Pessoal, em uma classe tenho o seguinte metodo:

public Collection doSelect() {
		Collection usuarios = new ArrayList();
		AcessoBean usuario = new AcessoBean();
		
		try {
			ResultSet rs = null;
			Statement stm = null;
			Connection con = getConnection();
			rs = stm.executeQuery("SELECT * FROM CADASTRO WHERE LIKE '%"+nome+"%'");
			
			while(rs.next()) {
				usuario = new AcessoBean();
				usuario.setNome(rs.getString("nome"));
				usuario.setIdade(rs.getInt("idade"));
				usuario.setSalario(rs.getDouble("salario"));
				usuarios.add(usuario);
			}
			
			stm.close();
			con.close();	
		} 
		catch (SQLException e) {	
			System.err.println("Não conectou ao banco!");
		}
					
		return usuarios;
	}

E na página de exibicao.jsp possuo o seguinte:

<jsp:useBean id="buscar" class="acesso.AcessoBean">
<%@page import="java.util.*" %> 

<% 	ArrayList exibirUsuarios = new ArrayList(buscar.doSelect()); 
	Iterator lista = exibirUsuarios.iterator();
	while (lista.hasNext()) {
		buscar = (acesso.AcessoBean)lista.next();  %>
		<jsp:getProperty name="buscar" property="nome" /><br>
		<jsp:getProperty name="buscar" property="idade" /><br>
		<jsp:getProperty name="buscar" property="salario" /><br>
<%}%>
</jsp:useBean>

e o erro:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

root cause

java.lang.NullPointerException
java.util.ArrayList.(ArrayList.java:132)
org.apache.jsp.busca_jsp._jspService(busca_jsp.java:52)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)
javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

note The full stack trace of the root cause is available in the Tomcat logs.

Deve ser alguma coisa boba e agradeço a quem me ajudar.. obrigado!
[]'s.

6 Respostas

pcalcado

Fala, beto,

Certifique-se que seu doSelect() não está retornando null.

[]s

betonit

tem razao kra… mas e agora? qual sera o erro no meu metodo?
alguem pode me ajudar?

ele realmente retorna null.

[]'s

_fs

Você não está instanciando sua collection.

Collection usuarios = null;

E tenta acessar os métodos dela. Bizarro não ter apontado a exceção no seu método doSelect, então provavelmente sua consulta também não está retornando resultados.

betonit

OK Lipe, alterei meu post como vc falou e o erro passou a ser este:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)

javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

root cause

java.lang.NullPointerException

acesso.AcessoBean.doSelect(AcessoBean.java:30)

org.apache.jsp.busca_jsp._jspService(busca_jsp.java:51)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:133)

javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:311)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248)

javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

note The full stack trace of the root cause is available in the Tomcat logs.

Obrigado por estarem me ajudando.

_fs
java.lang.NullPointerException
acesso.AcessoBean.doSelect(AcessoBean.java:30)

Olha só o que a exceção está te dizendo: ocorreu uma NullPointerException na linha 30 da classe AcessoBean, mais especificamente dentro do método doSeletct()

Que tal dar uma olhada nessa linha e, se não conseguir ver o erro, postar o código novamente, indicando qual o trecho que causa a exceção?

betonit

LIPE, depois de tanto mexer nesse code, parece q esta quase funcionando...

public Collection doSelect() {
		Collection usuarios = new ArrayList();
		AcessoBean usuario = null;
		
		try {
			Connection con = getConnection();
			Statement stm = con.createStatement();
			ResultSet rs = stm.executeQuery("SELECT * FROM CADASTRO WHERE nome LIKE '%"+nome+"%'");
			
			while(rs.next()) {
				usuario = new AcessoBean();
				usuario.setNome(rs.getString("nome"));
				usuario.setIdade(rs.getInt("idade"));
				usuario.setSalario(rs.getDouble("salario"));
				usuarios.add(usuario);
			}
			
			stm.close();
			con.close();
			return usuarios;	
		} 
		catch (SQLException e) {	
			System.err.println("Erro de SQL!");
			e.printStackTrace();
			return null;
		}
		catch (Exception e) {
		   System.out.println("Erro Geral!");
		   e.printStackTrace();
		   return null;
		}

	}

Ele compila e roda mas informa resultados errados onde creio eu q pode ser no jsp abaixo:

<%@page import="java.util.*" %>

<jsp:useBean id="buscar" class="acesso.AcessoBean">
	
	<jsp:setProperty name="buscar" property="nome" />
	
<%  ArrayList exibirUsuarios = new ArrayList(buscar.doSelect());
    Iterator lista = exibirUsuarios.iterator();
    while (lista.hasNext()) {
    	buscar = (acesso.AcessoBean)lista.next();  %>
        <jsp:getProperty name="buscar" property="nome" /><br>
        <jsp:getProperty name="buscar" property="idade" /><br>
        <jsp:getProperty name="buscar" property="salario" /><br>
  <%}%>
</jsp:useBean>

Desde já agradeço a tds!

Criado 20 de setembro de 2004
Ultima resposta 21 de set. de 2004
Respostas 6
Participantes 3