Duvida com jstl

3 respostas
Enadrov

Agora estou começando a mexe em programação para web e estou lendo a apostila do caelum, porem no primeiro exemplo jstl ele esta dando um erro NullPointException, ou seja está fazendo uma refenrecia a um valor nulo, como ainda não conhece esta linguagem não sei onde esta o erro. Aqui vai parte do código espero que possam me ajudar.

cod. jstl:

<jsp:useBean id=“dao” class=“br.com.caelum.jdbc.dao.ContatoDAO”/>



<c:forEach var=“contato” items="${dao.lista}">






</c:forEach>
${contato.nome} ${contato.email} ${contato.endereco} ${contato.dataNascimento.time}

e a classe ContatoDAO utiliza este metodo getista().

<blockquote>	public List getLista(){

try{

List contatos = new ArrayList();

PreparedStatement stmt = this.connection.prepareStatement(“SELECT * FROM contatos”);

ResultSet rs = stmt.executeQuery();
while(rs.next()){
			Contato contato = new Contato();
			contato.setId(rs.getLong("id"));
			contato.setNome(rs.getString("nome"));
			contato.setEmail(rs.getString("email"));
			contato.setEndereco(rs.getString("endereco"));
			
			//monta a data através do Calendar
			Calendar data = Calendar.getInstance();
			data.setTime(rs.getDate("datanascimento"));
			contato.setDataNascimento(data);
			
			//adiciona o objeto a lista
			contatos.add(contato);
		}
		
		rs.close();
		stmt.close();
		return contatos;
	}catch(SQLException e){
		throw new RuntimeException(e);
	}
}</blockquote>

Se alguem poder me dizer onde está o erro eu agradeço!!

3 Respostas

A

Boa tarde Enadrov.

O stack trace mostra o local onde ocorre o erro, você poderia postar o stack ??

facilitaria …

[]'s

drsmachado

Tem certeza que postou a classe correta?
Primeiro, não há como saber se existe um objeto com nome dao em algum escopo.
Segundo, não tem como saber se existe uma variável com nome lista como atributo de dao.

Terceiro, usar a tag [code] que é bom, nada?

Enadrov
Aqui está a classe completa. E referente a
eu acabei marcando quote e vem de  code!

[code]public class ContatoDAO {
	private Connection connection;
	
	public ContatoDAO(){
		this.connection = new ConnectionFactory().getConnection();
	}
	
	public void adiciona(Contato contato){
		String sql = "INSERT INTO contatos(nome, email, endereco, dataNascimento) VALUES (?,?,?,?)";
		
		try{
			PreparedStatement stmt = this.connection.prepareStatement(sql);
			
			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getEmail());
			stmt.setString(3, contato.getEndereco());
			stmt.setDate(4, new Date(contato.getDataNascimento().getTimeInMillis()));
			
			stmt.execute();
			stmt.close();
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
	}
	
	public List<Contato> getLista(){
		try{
			List<Contato> contatos = new ArrayList<Contato>();
			PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM contatos");
			ResultSet rs = stmt.executeQuery();
			
			while(rs.next()){
				Contato contato = new Contato();
				contato.setId(rs.getLong("id"));
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));
				
				//monta a data através do Calendar
				Calendar data = Calendar.getInstance();
				data.setTime(rs.getDate("datanascimento"));
				contato.setDataNascimento(data);
				
				//adiciona o objeto a lista
				contatos.add(contato);
			}
			
			rs.close();
			stmt.close();
			return contatos;
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
	}
	
	public List<Contato> getLista(int id){
		try{
			List<Contato> contatos = new ArrayList<Contato>();
			PreparedStatement stmt = this.connection.prepareStatement("SELECT * FROM contatos WHERE id = ?");
			
			stmt.setInt(1, id);
			ResultSet rs = stmt.executeQuery();
			
			while(rs.next()){
				Contato contato = new Contato();
				contato.setId(rs.getLong("id"));
				contato.setNome(rs.getString("nome"));
				contato.setEmail(rs.getString("email"));
				contato.setEndereco(rs.getString("endereco"));
				
				//monta a data através do Calendar
				Calendar data = Calendar.getInstance();
				data.setTime(rs.getDate("datanascimento"));
				contato.setDataNascimento(data);
				
				//adiciona o objeto a lista
				contatos.add(contato);
			}
			
			rs.close();
			stmt.close();
			return contatos;
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
	}
	
	public void altera(Contato contato){
		String sql = "UPDATE contatos SET nome=?, email=?, endereco=?, dataNascimento=? WHERE id=?";
		
		try{
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1, contato.getNome());
			stmt.setString(2, contato.getEmail());
			stmt.setString(3, contato.getEndereco());
			contato.getDataNascimento();
			stmt.setDate(4, new Date(Calendar.getInstance().getTimeInMillis()));
			stmt.setLong(5, contato.getId());
			stmt.execute();
			stmt.close();
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
	}
	
	public void remove(Contato contato){
		try{
			PreparedStatement stmt = connection.prepareStatement("DELETE FROM contatos WHERE id=?");
			stmt.setLong(1, contato.getId());
			stmt.execute();
			stmt.close();
		}catch(SQLException e){
			throw new RuntimeException(e);
		}
	}
}
Criado 28 de dezembro de 2011
Ultima resposta 28 de dez. de 2011
Respostas 3
Participantes 3