Como popular combo box JSP

Boa Tarde!!

Não estou conseguindo popular meu combobox da classe produto, que por sua vez é filho (1:N) da categoria.

Segue erro do servidor, página jsp e classe produto

import com.mysql.jdbc.Blob;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;

/**
 *
 * @author ti_m08
 */
public class Produto extends Object implements Serializable{
    
    private int Cod_Produto, Categoria_Cod_Categoria;
    private String Descricao;
    private int Qtde_Est_Minima, Qtde_Est_Maxima;
    private float Vlr_Custo, Vlr_Revenda;
    private Blob  imagem;
    private Categoria categoria;

    public Produto(int cod_produto, String descricao, int qtde_est_minima, int qtde_est_maxima, int vlr_custo, int vlr_revenda,int categ_cod_categ) {
	super();
	// TODO Auto-generated constructor stub
	this.setCod_Produto(cod_produto);
        this.setCategoria_Cod_Categoria(categ_cod_categ);
        this.setDescricao(descricao);
	this.setQtde_Est_Minima(qtde_est_minima);
	this.setQtde_Est_Maxima(qtde_est_maxima);
	this.setVlr_Custo(vlr_custo);
	this.setVlr_Revenda(vlr_revenda);
	}              

    public Produto() {
		super();
		// TODO Auto-generated constructor stub
	}

    public int getCod_Produto() {
        return Cod_Produto;
    }

    public void setCod_Produto(int Cod_Produto) {
        this.Cod_Produto = Cod_Produto;
    }

    public int getCategoria_Cod_Categoria() {
        return Categoria_Cod_Categoria;
    }

    public void setCategoria_Cod_Categoria(int Categoria_Cod_Categoria) {
        this.Categoria_Cod_Categoria = Categoria_Cod_Categoria;
    }

    public String getDescricao() {
        return Descricao;
    }

    public void setDescricao(String Descricao) {
        this.Descricao = Descricao;
    }

    public int getQtde_Est_Minima() {
        return Qtde_Est_Minima;
    }

    public void setQtde_Est_Minima(int Qtde_Est_Minima) {
        this.Qtde_Est_Minima = Qtde_Est_Minima;
    }

    public int getQtde_Est_Maxima() {
        return Qtde_Est_Maxima;
    }

    public void setQtde_Est_Maxima(int Qtde_Est_Maxima) {
        this.Qtde_Est_Maxima = Qtde_Est_Maxima;
    }

    public float getVlr_Custo() {
        return Vlr_Custo;
    }

    public void setVlr_Custo(float Vlr_Custo) {
        this.Vlr_Custo = Vlr_Custo;
    }

    public float getVlr_Revenda() {
        return Vlr_Revenda;
    }

    public void setVlr_Revenda(float Vlr_Revenda) {
        this.Vlr_Revenda = Vlr_Revenda;
    }

    public Blob getImagem() {
        return imagem;
    }

    public void setImagem(Blob imagem) {
        this.imagem = imagem;
    }

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }

    
}

Figueiredo,

eu só vi sua classe Bean com construtores, getters e setters.

Aonde está o código que possui a lista e a jsp que popula o combo?

att

Desculpe!!

Taqui!!

Populando:


/*
 * CategoriaFacade.java
 *
 * Created on 6 de Dezembro de 2006, 15:00
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package beans;

import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import util.HibernateUtil;
/**
 *  @netbeans.hibernate.facade beanClass=beanslocadora.categoria
 */
public class CategoriaFacade { 
    private Categoria categoria;
    private String descr_Cat;
    Session session;
    
    public void saveCategoria(Categoria categoria) {
        try{
         HibernateUtil.beginTransaction();
         Session session = HibernateUtil.currentSession();
         session.save(categoria);
         HibernateUtil.commitTransaction();
         addMessage("Categoria salva com sucesso.");
        }catch(HibernateException e1){ 
         addMessage("Erro ao cadastrar categoria!");
         throw e1;         
        }finally{HibernateUtil.closeSession();}
    } 
    
     
    public String criaCategoria(Categoria categoria){
      if (this.findByDescricao(categoria.getDescricao())==null)
      {this.saveCategoria(categoria);
         return "categoria_criada";
      }else  {
          addMessage("Categoria ja existente!");
          return "categoria_criate";
      }
    }
    
    public String criaCategoria(){
    if (this.findByDescricao(categoria.getDescricao())==null)
    {this.saveCategoria(this.getCategoria());
     return "categoria_criada";
    }else  {
          addMessage("Categoria ja existente!");
          return "categoria_create";
      }
    }

     public CategoriaFacade(){}

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }
    
  public String createSetup() {
        this.setCategoria(new Categoria());
        return "categoria_create";
    }
  
  public Categoria findByDescricao(String descricao) {
      try{
          Session session = HibernateUtil.currentSession();
          
          String query1 ="from Categoria c where c.Descricao = :descricao";
          org.hibernate.Query query = session.createQuery(query1).setString("descricao", descricao).setMaxResults(1);
          Categoria categoria =(Categoria) query.uniqueResult();
          return categoria;
      }catch(HibernateException e){ 
          addMessage("Erro ao localizar categoria!");
          return null;
      }
  }

   public List getCategorias() {
       try{
          HibernateUtil.beginTransaction();
          Session session = HibernateUtil.currentSession();
          org.hibernate.Query query = session.createQuery(
          "select object(o) from Categoria as o");
          List list= query.list(); 
          HibernateUtil.commitTransaction();
          HibernateUtil.closeSession();
          return list;
       }catch(HibernateException e1){ 
           addMessage("Erro em listar categorias!"); 
           throw e1;  
           //return null;
            }    
   }
  
  
   public String destroy() {
      try{
            HibernateUtil.beginTransaction();
            Session session = HibernateUtil.currentSession();
            Categoria categoria = getCategoriaFromRequestParam();
            session.delete(categoria);
            HibernateUtil.commitTransaction();
            addMessage("Categoria removida com sucesso.");            
        } catch(HibernateException e1) {
          addMessage("Erro ao remover categoria!");
          throw e1;
        } finally{HibernateUtil.closeSession();}
        return "categoria_list"; 
    }

   public Categoria getCategoriaFromRequestParam() {
       ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext();
       HttpServletRequest request = (HttpServletRequest)ec.getRequest();
       String param = request.getParameter("descricao");
       System.out.println("categoria em getCategriaFromRqParam="+param);
       return this.findByDescricao(param);
       
   }

    public static void addMessage(String msg) {
        FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg);
        FacesContext fc = FacesContext.getCurrentInstance();
        fc.addMessage(null, facesMsg);
    }

   
   public String editSetup() {
        setCategoriaFromRequestParam();
        return "categoria_edit";
    }
   
   public void setCategoriaFromRequestParam() {
       Categoria categoria = getCategoriaFromRequestParam();
       if(categoria==null) System.out.println("categoria nula");
       setCategoria(categoria);
   }

   
    public String edit() {
        try{
             HibernateUtil.beginTransaction();
             Session session = HibernateUtil.currentSession();
             session.merge(categoria);
             HibernateUtil.commitTransaction();
             addMessage("Categoria foi atualizada com sucesso.");
        } catch (Exception ex) {
            try {
                 addMessage("Erro ao atualizar categoria!");
            } catch (Exception e) {System.out.println("erro em edit categoria");}
        }finally{ HibernateUtil.closeSession(); }
        return "categoria_list"; 
    }
    
    
}

JSP


<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h" %>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Cadastrando Produtos</title>
</head>

<f:view>

    <h:messages style="color: green" layout="table"/>
    <h1>Cadastro de Produtos</h1>
        <h:form> 


            <h:panelGrid columns="2">
                <h:selectOneMenu id="Descricao" value="#{CategoriaFacade.categoria.cod_Categoria}">
                    <f:selectItems
                        value="#{CategoriaFacade.categoriaFromRequestParam}" />
                </h:selectOneMenu> 
            <h:outputText>Descricao:</h:outputText>
            <h:inputText id="descricao_prod" value="#{ProdutoFacade.produto.descricao}" title="Descr Prod"/>
            <h:outputText>Estoque Minimo</h:outputText>
            <h:inputText id="Qtde_Est_Minima" value="#{ProdutoFacade.produto.qtde_Est_Minima}" title="Est.Minimo" />
            <h:outputText>Estoque Maximo</h:outputText>
            <h:inputText id="Qtde_Est_Maxima" value="#{ProdutoFacade.produto.qtde_Est_Maxima}" title="Est.Maximo" />
            <h:outputText>Preço Custo</h:outputText>
            <h:inputText id="Vlr_Custo" value="#{ProdutoFacade.produto.vlr_Custo}" title="Preço Custo" />
            <h:outputText>Preço Venda</h:outputText>
            <h:inputText id="Vlr_Venda" value="#{ProdutoFacade.produto.vlr_Revenda}" title="Preço Venda" />
        </h:panelGrid>
        <h:commandLink action="#{ProdutoFacade.criaProduto}" value="Salvar"/>
        <br>
        <h:commandLink action="produto_list" value="Listar Todos Produtos"/>
        <br>
        <a href="/svo/index.jsp">Home</a>
    </h:form>
</f:view>

Muito Obrigado!!

como vc declarou sua navigation-rules no faces-config?

ele ta declarado la para vc conseguir pegar essa lista na view?

Primeiro

  • o ‘values’ do teu selectItems deve receber uma Collection (List, Vector…) de javax.faces.model.SelectItem, dê uma olhada no construtor dessa Classe para ver quais são os parâmetros!

  • popule a sua lista no método get do teu atributo

Acho que era isto!

Karen as navegações estão corretas!!

Thiago, Seguinte!!

Como sou iniciante em java tô apanhando p/ criar a list no metodo get do atributo descricao da classe categoria (taí pracima). Pode me dar um help,??

Abraço