Erro em JSP - Metodos de classe

6 respostas
G

Ola pessoal.

Tenho uma classe que retorna um ArrayList.
Quero pegar esse array dentro do jsp so que dá erro.
Olhem o codigo da classe.

package com.br;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

public class pesqCarro {
	
	public ArrayList pesqCarro(Connection con, String placa, String tipo) {
		try {
			ArrayList ret= new ArrayList();
			Statement st = con.createStatement();
			String cmd = "";
			if (placa == null) {
				cmd = "SELECT * FROM carro";
			}else
				cmd ="SELECT * FROM carro WHERE "+tipo+"='"+placa+"'";
			    System.out.println("Comando = "+cmd);
			ResultSet rs = st.executeQuery(cmd);
			while (rs.next()) {
				carro u= new carro();
				u.setPlaca(rs.getString("PLACA"));
				u.setMarca(rs.getString("MARCA"));
				u.setModelo(rs.getString("MODELO"));
				u.setCor(rs.getString("COR"));
				u.setQntPorta(rs.getInt("QNT_PORTAS"));
				u.setSom(rs.getInt("SOM"));
				u.setVidroEletrico(rs.getInt("VIDRO_ELETRICO"));
				u.setAlarme(rs.getInt("ALARME"));
				u.setRoda(rs.getInt("RODAS"));
				u.setConver(rs.getInt("CONVERSIVEL"));
				u.setValorCompra(rs.getDouble("VALOR_COMPRA"));
				u.setValorAluguel(rs.getDouble("VALOR_ALUGUEL"));
				u.setFoto(rs.getString("FOTO"));
				u.setDisponivel(rs.getInt("DISPONIVEL"));
				u.setValorCarro(rs.getDouble("VALOR_CARRO"));
				u.setAno(rs.getInt("ANO"));
				
				ret.add(u);				
			}
			rs.close();
			st.close();
			return ret;
		} catch (SQLException se) {
			// TODO: handle exception
			System.out.println("erro consulta "+se);
			return null;
		}
	}

}

o codigo que estou usando no jsp é esse

<jsp:useBean id="c" class="com.br.conexao"/>
        
  <% ArrayList rect;
	   pesqCarro pesquisa= new pesqCarro(c.getCon(),"abc1234","PLACA");
   %>

O erro que tá dando é esse:

Se alguem poder ajudar eu agradeceria e muito.
:roll:

6 Respostas

Guilherme_Gomes

Primeiro, voce esta recebendo um ArrayList e guardando num pesqCarro? Esse pesqCarro é uma função e não um construtor

&lt;% ArrayList rect;  
  pesqCarro pesquisa= new pesqCarro(c.getCon(),"abc1234","PLACA");  
%&gt;

mude por:

&lt;% ArrayList rect;  
  rect = new pesqCarro().pesqCarro(c.getCon(),"abc1234","PLACA");  
%&gt;

Outras coisas a lhe falar:

  1. Por padrão, usamos classes com letras maiusculas e funções com minusculas. por exemplo,
class Classe{
     public void funcaoFazAlgo(){ ... }
}
  1. Não crie a conexão num JSP.

  2. Não é recomendado o uso de scriptlets ( o <%…%> do seu código )

  3. Se voce quer usar jdbc direto, de uma olhada em PreparedStatement.
    Caso não queira dê uma olhada em Hibernate e JPA, que podem ajudar muito voce. Banindo esses comandos SQL.

  4. Outras coisas você aprende com o tempo, fica tranquilo ^^

G

Opa valeu Guilherme.

Mas agora o erro mudou!!!

o q será q pode ta acontecendo…?

ps: enquanto a suas dicas foram. Elas foram válidas

G

outra coisa…

como é que eu faço isso sem usar scriptlets? Procurei o jeito de fazer mas nao achei… :cry:

Eu to tentando assim:

<jsp:useBean id="car" class="com.br.carro" scope="page"/>
  <jsp:useBean id="con" class="com.br.conexao" scope="session"/>
  <jsp:useBean id="rec" class="java.util.ArrayList" scope="page"/>
   <jsp:useBean id="pesq" class="com.br.pesquisaBanco" scope="page"/>
   <%
	        rec=pesq.pesquisaCarro(con.getCon(),request.getParameter("pPlaca"),"PLACA");
   %>

so que o erro persiste.

Pode ajudar? :shock:

gleise

Sobre o novo erro, dê uma olhada na linha 13 da classe pesqCarro.java, como está no stacktrace:

java.lang.NullPointerException 
com.br.pesqCarro.pesqCarro(pesqCarro.java:13)

Deve ter uma chamada de método em um objeto nulo!

Sobre não usar scriptlet, uma saída é usa jstl

G

Galera… olha.

acrescentei no classe o seguinte metodo:

public String teste()
{
    return "teste";
}

e fiz o seguinte no jsp. (so pra testar :smiley: )

<%
    String t = new pesqCarro().teste();
%>

so que o seguinte erro acontece.

:roll:

gleise

Tente assim:

String t = (new pesqCarro()).teste();

:wink:

Criado 13 de novembro de 2007
Ultima resposta 13 de nov. de 2007
Respostas 6
Participantes 3