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