Preencher combo com JSTL

Prezados,

Estou tentando popular um combo em uma pagina JSP só que esta dando erro e eu não estou enchagado ele. Alguém pode dar uma ajuda? Por favor!

Pagina JSP

           <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
					<td colspan="5">
					<jsp:useBean id="dao" class="AplicBD.CategoriaDAO" /> 
					
					<select name="categoria">
							<option value="">Selecione</option>
							
							<c:forEach var="cat" items="${dao.lista}">
								<option value="${cat.id_categoria}">${cat.nome_categoria}</option>
							</c:forEach>
							
					</select>
					</td>

Classe DAO

package AplicBD;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import Modelo.Categoria;

public class CategoriaDAO {

	private Connection connection;

	public CategoriaDAO(Connection connection) {
		this.connection = connection;
	}

	public void cadastrarCategoria(Categoria categoria) {

		String sql = "insert into categorias(nome_categoria, ativo)values(?,?)";

		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			
			stmt.setString(1, categoria.getNome());
			stmt.setString(2, categoria.getAtivo());
			stmt.execute();
			stmt.close();

		} catch (SQLException e) {
			throw new RuntimeException(e);
		}

	}
	
	public List<Categoria> getLista(){
		
	try {
		List<Categoria> lista_Categorias = new ArrayList<Categoria>();
		
		PreparedStatement stmt = this.connection.prepareStatement("select id_categoria, " +
				"nome_categoria, ativo from categorias");
		
		ResultSet rs = stmt.executeQuery();
		
		while(rs.next()){
			
			Categoria cat = new Categoria();
			cat.setId_categoria(rs.getLong("id_categoria"));
			cat.setNome(rs.getString("nome_categoria"));
			cat.setAtivo(rs.getString("ativo"));
			lista_Categorias.add(cat);
		}
		
		rs.close();
		stmt.close();
		return lista_Categorias;
		
	} catch (SQLException e) {
		 throw new RuntimeException(e);
	}		
		
	}

}

Agradecido! :oops:

Cara,

Você está usando o vraptor,JSF?

O que deve estar acontecendo, e que os dados não estou chegando a view.
No caso do vraptor, vc precisa no seu controller, no metodo do formulário, acrescentar.

result.include("consulta do DAO");

Flw.

Veja se isso pode te ajudar: L I N K

Abrax

alexandre.marques,

O que eu posso ver é que vc está pegando o valor do atributo nome assim:

&lt;option value="${cat.id_categoria}"&gt;${cat.nome_categoria}&lt;/option&gt;

Sendo que ele tem o get assim:

categoria.getNome();

Então vc usaria ${cat.nome}

É interesssante vc nomear atributos usando CamelCase http://pt.wikipedia.org/wiki/CamelCase como idCategoria e deixa nomes separados por hífen como id_categoria pras colunas do banco de dados, principalmente porque as EL usam os métodos get do bean.

Uma dúvida o <:useBean id="" class="" /> serve somente para instanciar classes bean ou eu posso instanciar qualquer classe?

<jsp:useBean id="dao" class="AplicBD.CategoriaDAO" /> :?:

Qualquer classe que seja concreta e que tenha um construtor padrão.

Agora vc vai poder usar apenas métodos get/set via &lt;jsp:getProperty name="" property=""&gt; &lt;jsp:setProperty name="" property="" value="" /&gt;