Não consigo ver em qual detalhe estou pecando pois não consigo acessar os atributos para inserir um cadastro no banco. quando digito a classe bean e o ponto o eclipse so sugere para mim class ao inves de produto segue meu codigo.
<?xml version="1.0" encoding="UTF-8" ?>
<!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:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<ui:composition template="_template.xhtml">
<ui:define name="titulo">
Novo Produto
</ui:define>
<ui:define name="conteudo">
<h:form id="produto">
<fieldset>
<legend>Dados do Produto </legend>
<br/>
<!-- <h:panelGrid columns="1"> -->
<h:outputLabel value="Nome:" for="nome" />
<h:inputText id="nome" value="#{produtoBean.Produtos.nome}">
<f:ajax event="blur" render="messageNome" />
</h:inputText>
<h:message for="nome" id="messageNome" />
<h:outputLabel value="Preco:" for="preco" />
<h:inputText id="preco" value="#{produtoBean.produtos.preco}" required="true">
<f:passThroughAttribute name="type" value="preco" />
</h:inputText>
<h:message for="preco" id="messagePreco" />
<h:commandButton value="Cadastrar" action="#{produtoBean.gravar}"/>
<!-- </h:panelGrid>-->
</fieldset>
</h:form>
</ui:define>
</ui:composition>
</html>
classe produtos
package br.com.ronaldo.mercado.modelo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class Produtos implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
private int codigo;
private String nome;
private double preco;
public int getCodigo() {
return codigo;
}
public void setCodigo(int codigo) {
this.codigo = codigo;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public double getPreco() {
return preco;
}
public void setPreco(double preco) {
this.preco = preco;
}
}
meu Dao
package br.com.ronaldo.mercado.dao;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.criteria.CriteriaQuery;
import br.com.ronaldo.mercado.modelo.Produtos;
public class Dao<T> {
private final Class<T> classe;
public Dao(Class<T> classe) {
this.classe = classe;
}
public void adiciona(T t){
EntityManagerFactory emf = Persistence.createEntityManagerFactory("mercado");
EntityManager em = emf.createEntityManager();
em.getTransaction().begin();
em.persist(t);
em.getTransaction().commit();
em.close();
}
}
meu bean
package br.com.ronaldo.mercado.bean;
import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import br.com.ronaldo.mercado.dao.Dao;
import br.com.ronaldo.mercado.modelo.Produtos;
@ManagedBean
@ViewScoped
public class ProdutoBean implements Serializable {
private static final long serialVersionUID = 1L;
private Produtos produto = new Produtos();
public String gravar(){
System.out.println("gravando produtos" + this.produto.getNome());
new Dao<Produtos>(Produtos.class).adiciona(this.produto);
this.produto = new Produtos();
return "produto?faces-redirect=true";
}
}
meu persistence
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="mercado" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.ronaldo.mercado.modelo.Produtos</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" />
<property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost/mercadodb" />
<property name="javax.persistence.jdbc.user" value="root" />
<property name="javax.persistence.jdbc.password" value="Copa2014" />
<property name="hibernate.hbm2ddl.auto" value="update" />
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect" />
</properties>
</persistence-unit>
</persistence>