Bom dia pessoal !
estou começando dom JSF e hibernate e gostria de uma ajuda…
é o seguinte tenho 2 classes Categoria e Produto
e uso o selectOneMenu para poder selecionar um item Categoria.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<link rel="stylesheet" type="text/css" href="estilos.css" />
</h:head>
<h:body>
<h:form>
<p:panel id="panel1" header="Cadastro Categoria">
<h:panelGrid columns="2">
<h:outputLabel for="Nome" value="Nome:" />
<p:inputText id="nome" value="#{categoriaBean.novaCategoria.nome}"
label="Nome" />
<p:commandButton value="Cadastrar"
actionListener="#{categoriaBean.cadastra}" />
</h:panelGrid>
</p:panel>
</h:form>
<h:form>
<p:panel id="panel1" header="Cadastro Produto">
<h:panelGrid columns="2">
<h:outputLabel for="Nome" value="Nome: *" />
<p:inputText id="nome" value="#{produtoBean.novoProduto.nome}" label="Nome" />
<h:outputText value="Telefone" />
<p:selectOneMenu value="#{produtoBean.novoProduto.categoria}" effect="fade">
<f:selectItem itemLabel="Selecione" itemValue="" />
<f:selectItems value="#{categoriaBean.cateorias}" var="c"
itemLabel="#{c.nome}" itemValue="#{c.codigo}" />
</p:selectOneMenu>
<p:commandButton value="Cadastrar"
actionListener="#{produtoBean.cadastra}" />
</h:panelGrid>
</p:panel>
</h:form>
</h:body>
</html>
Más quando vou cadastrar o produto com uma categoria selecionada ele da o erro que não pode converter :
Caused by: javax.el.ELException: /index.xhtml @35,81 value="#{produtoBean.novoProduto.categoria}": Cannot convert 4 of type class java.lang.String to class modelo.Categoria at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:139).
Quando uso as 2 classes sem o relacionamento funciona normalmente.
BEANS
CategoriaBean
package bean;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import modelo.Categoria;
public class CategoriaBean {
Categoria novaCategoria = new Categoria();
private List<Categoria> cateorias;
private Categoria CategoriaSelecionada;
public void cadastra() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("Loja");
EntityManager manager = factory.createEntityManager();
manager.persist(novaCategoria);
manager.getTransaction().begin();
manager.getTransaction().commit();
factory.close();
}
public List<Categoria> consulta() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("Loja");
EntityManager manager = factory.createEntityManager();
javax.persistence.Query query = manager.createQuery("SELECT e FROM Categoria e");
return query.getResultList();
}
public Categoria getNovaCategoria() {
return novaCategoria;
}
public void setNovaCategoria(Categoria novaCategoria) {
this.novaCategoria = novaCategoria;
}
public List<Categoria> getCateorias() {
if(cateorias == null){
cateorias=consulta();
}
return cateorias;
}
public void setCateorias(List<Categoria> cateorias) {
this.cateorias = cateorias;
}
public Categoria getCategoriaSelecionada() {
return CategoriaSelecionada;
}
public void setCategoriaSelecionada(Categoria categoriaSelecionada) {
CategoriaSelecionada = categoriaSelecionada;
}
}
ProdutoBean
package bean;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import modelo.Produto;
public class ProdutoBean {
Produto novoProduto = new Produto();
private List<Produto> produtos;
private Produto ProdutoSelecionado;
public void cadastra() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("Loja");
EntityManager manager = factory.createEntityManager();
manager.persist(novoProduto);
manager.getTransaction().begin();
manager.getTransaction().commit();
factory.close();
System.out.println("Cadastrado com sucesso!!!");
}
public List<Produto> consulta() {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("Loja");
EntityManager manager = factory.createEntityManager();
javax.persistence.Query query = manager.createQuery("SELECT e FROM Produto e");
return query.getResultList();
}
public Produto getNovoProduto() {
return novoProduto;
}
public void setNovoProduto(Produto novoProduto) {
this.novoProduto = novoProduto;
}
public List<Produto> getProdutos() {
if(produtos==null){
produtos=consulta();
}
return produtos;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
public Produto getProdutoSelecionado() {
return ProdutoSelecionado;
}
public void setProdutoSelecionado(Produto produtoSelecionado) {
ProdutoSelecionado = produtoSelecionado;
}
}
Obrigado!!!