Como popular combo box JSP

5 respostas
H

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;
    }

    
}

5 Respostas

K

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

H

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!!

K

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

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

thiago.correa

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!

H

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

Criado 13 de dezembro de 2006
Ultima resposta 14 de dez. de 2006
Respostas 5
Participantes 3