Null Pointer?[RESOLVIDO]

Olá pessoal, não sei nada de JavaEE…estou tentando listar meus clientes em um combo…mas esta dando erro.

<%
    List<Cliente> clientes = ClienteDAO.recuperateAll();
%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form name="form" method="post" action="AlteraCli.jsp">
            <select name="cmbCliente">
                <option>--- Selecione Cliente ---</option>
                <%for(int i=0; i<clientes.size(); i++){%>
                <option value="<%= clientes.get(i).getCliNome() %>"></option>
                <%}%>
            </select>
            <input type="submit" value="Alterar" />
        </form>
    </body>
</html>

Essa é a ClienteDAO

public class ClienteDAO {

    public static boolean save(Cliente cliente) {

        String sql = "insert into cliente (clinome,clifone,clidivida,clirua,bairro,cidade)values(?,?,?,?,?,?)";
        try {
            PreparedStatement pstm = (PreparedStatement) new Conexao().getConexao().prepareStatement(sql);

            pstm.setString(1, cliente.getCliNome());
            pstm.setString(2, cliente.getCliFone());
            pstm.setDouble(3, cliente.getCliDivida());
            pstm.setString(4, cliente.getCliRua());
            pstm.setString(5, cliente.getCliBairro());
            pstm.setString(6, cliente.getCliCidade());

            pstm.executeUpdate();
            return true;

        } catch (Exception e) {
            System.out.println("Erro ao inserir o Cliente\n" + e);
            return false;
        }
    }

    public boolean delete(Cliente cliente) {
        String sql = "DELETE cliente WHERE idcliente = ?";
        try {
            PreparedStatement pstm = (PreparedStatement) new Conexao().getConexao().prepareStatement(sql);
            pstm.setInt(1, cliente.mostrar_id());
            pstm.executeUpdate();
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public boolean update(Cliente cliente) {
        String sql = "UPDATE cliente SET clinome = ? WHERE idcliente = ?";
        try {
            PreparedStatement pstm = (PreparedStatement) new Conexao().getConexao().prepareStatement(sql);
            pstm.setInt(1, cliente.mostrar_id());
            pstm.setString(2, cliente.mostrar_nome());
            pstm.executeUpdate();
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    public Cliente recuperate(int codigo) {
        Cliente cli;
        String sql = "SELECT idcliente, clinome FROM cliente WHERE idcliente = " + codigo;
        try {
            Statement stm = (Statement) new Conexao().getConexao().createStatement();
            ResultSet rs = (ResultSet) stm.executeQuery(sql);
            if (rs.next()) {
                cli = new Cliente();
                cli.setCodigo(rs.getInt("idcliente"));
                cli.setNome(rs.getString("clinome"));
                return cli;
            } else {
                return null;
            }
        } catch (Exception e) {
            return null;
        }
    }

    public static Cliente recuperate(String nome) {
        Cliente cli;
        String sql = "SELECT idcliente, clinome FROM cliente WHERE clinome = " + nome;
        try {
            Statement stm = (Statement) new Conexao().getConexao().createStatement();
            ResultSet rs = (ResultSet) stm.executeQuery(sql);
            if (rs.next()) {
                cli = new Cliente();
                cli.setCodigo(rs.getInt("idcliente"));
                cli.setNome(rs.getString("clinome"));
                return cli;
            } else {
                return null;
            }
        } catch (Exception e) {
            return null;
        }
    }



    public static List<Cliente> recuperateAll(){
        List<Cliente> lista = new ArrayList<Cliente>();
        String sql;
        Cliente client;
        sql = "select clinome, clifone, clidivida, clirua, bairro, cidade from Cliente ORDER BY Nome";
        try {
            Statement stm = (Statement) new Conexao().getConexao().createStatement();
            ResultSet rs = (ResultSet) stm.executeQuery(sql);
            while(rs.next()){
                client = new Cliente();
                client.setNome(rs.getString("clinome"));
                client.setCliFone(rs.getString("clifone"));
                client.setCliDivida(Double.valueOf(rs.getString("clidivida")));
                client.setCliRua(rs.getString("clirua"));
                client.setCliBairro(rs.getString("bairro"));
                client.setCliCidade(rs.getString("cidade"));
                lista.add(client);
            }

        } catch (Exception e) {
            lista = null;
            System.out.println("Erro ao montar lista de Clientes\nErro:\n" + e);
        }
        return lista;
    }


}

erro:

HTTP Status 500 -

type Exception report

message

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

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /lista_clientes.jsp at line 24

21:         <form name="form" method="post" action="AlteraCli.jsp">
22:             <select name="cmbCliente">
23:                 <option>--- Selecione Cliente ---</option>
24:                 <%for(int i=0; i<clientes.size(); i++){%>
25:                 <option value="<%= clientes.get(i).getCliNome() %>"></option>
26:                 <%}%>
27:             </select>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:416)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NullPointerException
	org.apache.jsp.lista_005fclientes_jsp._jspService(lista_005fclientes_jsp.java:77)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

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

Se alguem puder me ajudar, estou mais por fora que joelho de escoteiro. :frowning:

Sua lista está NULL na hora de renderizar o JSP…
Acho que pode ser por que vocÊ usou “Nome” no order by, invés do provável “clinome”. Isto acarreta num erro de execução da consulta, e como vocÊ tem um “Silenciator” no catch, manda a lista como NULL.

Att.,

[quote]Sua lista está NULL na hora de renderizar o JSP…
Acho que pode ser por que vocÊ usou “Nome” no order by, invés do provável “clinome”. Isto acarreta num erro de execução da consulta, e como vocÊ tem um “Silenciator” no catch, manda a lista como NULL.

Att.,[/quote]

Eu também acho isso.

pessoal, obrigado…corrigi o sql mas esta dando outro erro:

26/11/2010 15:13:22 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NoClassDefFoundError: com/mysql/jdbc/ResultSet
        at br.com.unicep.TEI.JDDAO.ClienteDAO.recuperateAll(ClienteDAO.java:115)
        at org.apache.jsp.lista_005fclientes_jsp._jspService(lista_005fclientes_jsp.java:64)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Unknown Source)

html
type Exception report

message

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

exception

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/mysql/jdbc/ResultSet
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

javax.servlet.ServletException: java.lang.NoClassDefFoundError: com/mysql/jdbc/ResultSet
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
org.apache.jsp.lista_005fclientes_jsp._jspService(lista_005fclientes_jsp.java:95)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

root cause

java.lang.NoClassDefFoundError: com/mysql/jdbc/ResultSet
br.com.unicep.TEI.JDDAO.ClienteDAO.recuperateAll(ClienteDAO.java:115)
org.apache.jsp.lista_005fclientes_jsp._jspService(lista_005fclientes_jsp.java:64)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

valeu

Está faltando uma classe ai.

Talvez seja: “com.mysql.jdbc.ResultSet”. Mas não necessariamente é esta classe.

Eu acho que você está usando o ResultSet do MySQL e vez de usar o nativo do java.

olha os imports:
import com.mysql.jdbc.PreparedStatement;
import com.mysql.jdbc.ResultSet;
import com.mysql.jdbc.Statement;
import java.util.ArrayList;
import java.util.List;

Use:

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

léo, não deu erro agora, mas o combo aparece em branco, obrigado pela paciência


O combo aparece em branco porque você não colocou nada dentro dos options... 
Algo como, por exemplo:
[code]
<option value="<%= clientes.get(i).getCliNome() %>"><%= clientes.get(i).getCliNome() %></option>
[/code]

O combo aparece em branco porque você não colocou nada dentro dos options…
Algo como, por exemplo:

<option value="<%= clientes.get(i).getCliNome() %>"><%= clientes.get(i).getCliNome() %></option>

Putzzz…verdade…

Muito Obrigado a Todos!!!