Problema Com Promifaces Não estou conseguindo Salvar Os Dados Editados no DataTable RowEdit

Java

08/06/2013

<!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://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">

<h:body>

<!-- Quando utilizada sem o atributo template, uma composition é uma sequência de elementos que pode ser inseridoo em qualquer Lugar -->
<ui:composition template="./../templates/TemplateAdmin.xhtml">


<!-- Define o Conteúdo que é inserido em temlate com a tag UI:INSERT correspondente. -->
<ui:define name="west">
<p:layoutUnit position="west" size="250" header="Menu" effect="drop" collapsible="true">

<h:form>
<p:panelMenu >
<p:submenu label="Produto" >
<p:menuitem value="Cadastrar" outcome="/admin/paginas/CadastroProduto" icon="ui-icon-disk"/>
<p:menuitem value="Deletar" outcome="/admin/paginas/DeletarProduto" icon="ui-icon-trash"/>
</p:submenu>

<p:submenu label="Categoria">
<p:menuitem value="Cadastrar" outcome="/admin/paginas/CadastroCategoria" icon="ui-icon-disk"/>
<p:menuitem value="Atualizar" outcome="/admin/paginas/AtualizarCategoria" icon="ui-icon-arrowrefresh-1-w"/>
</p:submenu>

<p:submenu label="Sair">
<p:menuitem value="logout" outcome="/admin/paginas/HomeAdmin" icon="ui-icon-star"/>
</p:submenu>

<p:submenu label="Home">
<p:menuitem value="Home do WebSit" outcome="/home/paginas/Index" icon="ui-icon-star"/>
</p:submenu>

</p:panelMenu>
</h:form>

</p:layoutUnit>

</ui:define>


<!-- Inicio do conteudo principal -->
<!-- Define o Conteúdo que é inserido em temlate com a tag UI:INSERT correspondente. -->
<ui:define name="center">
<p:layoutUnit position="center" size="120" >

<h:form id="form">

<p:growl id="messages" showDetail="true" />

<!-- Inicio dataTble -->


<!--O metodo listaCategorias é chamado quando o ator insere dados no campo de pesquisa-->
<p:dataTable editable="true" paginatorTemplate="
" rowsPerPageTemplate="5,10,15" id="dataTable" var="pro" value="#{produtoControler.listaProdutos}"
paginator="true" scrollable="true" scrollHeight="300" selection="#{produtoControler.produtoSelecionado}" rowKey="#{pro.prodId}"
selectionMode="single">

<f:facet name="header">
Lista de Produtos
</f:facet>

<f:facet name="footer">
Produtos
</f:facet>

<p:ajax event="rowEdit" listener="#{produtoControler.onEdit()}" update=":form:messages" />
<p:ajax event="rowEditCancel" listener="#{produtoControler.onCancel()}" update=":form:messages" />




<!-- O sortBy faz a ordenação na ordem alfabetica --> <!--O filterBy filtra pelo nome --> <!-- O filterMatchMode gerecia por conteiner tipo grupos da mesma informação -->
<p:column headerText="ID" footerText="ID">

<h:outputText value="#{pro.prodId}" />
</p:column>

<!-- O sortBy faz a ordenação na ordem alfabetica --> <!--O filterBy filtra pelo nome --> <!-- O filterMatchMode gerecia por conteiner tipo grupos da mesma informação -->
<p:column width="120" headerText="Nome" footerText="Nome" sortBy="#{pro.prodNome}" filterBy="#{pro.prodNome}" filterMatchMode="contains" >

<h:outputText value="#{pro.prodNome}" />
</p:column>

<!-- O sortBy faz a ordenação na ordem alfabetica --> <!--O filterBy filtra pelo nome --> <!-- O filterMatchMode gerecia por conteiner tipo grupos da mesma informação -->
<p:column headerText="Data" footerText="Data" >

<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{pro.prodEntrada}" >
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:outputText>
</f:facet>
<f:facet name="input">
<h:inputText value="#{pro.prodEntrada}" >
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>
</f:facet>
</p:cellEditor>

</p:column>



<!-- O sortBy faz a ordenação na ordem alfabetica --> <!--O filterBy filtra pelo nome --> <!-- O filterMatchMode gerecia por conteiner tipo grupos da mesma informação -->
<p:column headerText="Descrição" footerText="Descrição">

<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{pro.prodDescricao}" />
</f:facet>
<f:facet name="input">
<h:inputText value="#{pro.prodDescricao}" />
</f:facet>
</p:cellEditor>

</p:column>

<!-- O sortBy faz a ordenação na ordem alfabetica --> <!--O filterBy filtra pelo nome --> <!-- O filterMatchMode gerecia por conteiner tipo grupos da mesma informação -->
<p:column headerText="Valor" footerText="Valor" >

<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{pro.prodValorunitario}" >
<f:convertNumber type="currency" locale="pt_BR"/>
</h:outputText>
</f:facet>
<f:facet name="input">
<h:inputText value="#{pro.prodValorunitario}" >
<f:convertNumber type="currency" locale="pt_BR"/>
</h:inputText>
</f:facet>
</p:cellEditor>

</p:column>

<!-- O sortBy faz a ordenação na ordem alfabetica --> <!--O filterBy filtra pelo nome --> <!-- O filterMatchMode gerecia por conteiner tipo grupos da mesma informação -->
<p:column headerText="Quantidade" footerText="Quantidade">

<h:outputText value="#{pro.prodQuantidade}"/>
</p:column>

<p:column headerText="Detalhes" footerText="Detalhes">
<p:commandButton id="selectButton" update=":form:detalhes" oncomplete="produto.show()" icon="ui-icon-search" title="Detalhes">
<f:setPropertyActionListener value="#" target="#{produtoControler.produtoSelecionado}"/>
</p:commandButton>
</p:column>

<p:column headerText="Editar" footerText="Editar">
<p:rowEditor />
</p:column >

</p:dataTable>
<!-- Fim datatable -->

<p:dialog header="Detalhes do Produto" widgetVar="produto" resizable="false" id="produtoDialog" showEffect="pulsate" hideEffect="explode" >

<p:panelGrid id="detalhes" columns="2" cellpadding="60" style="margin:0 auto;" >
<h:outputText value="nome" />
<h:outputText value="#{produtoControler.produtoSelecionado.prodNome}" rstyle="font-weight:bold"/>

<h:outputText value="Data" />
<h:outputText value="#{produtoControler.produtoSelecionado.prodEntrada}" rstyle="font-weight:bold">
<f:convertDateTime pattern="dd/MM/yyyy"/>
</h:outputText>

<h:outputText value="Quantidade" />
<h:outputText value="#{produtoControler.produtoSelecionado.prodQuantidade}" rstyle="font-weight:bold"/>

<h:outputText value="Valor" />
<h:outputText value="#{produtoControler.produtoSelecionado.prodValorunitario}" rstyle="font-weight:bold">
<f:convertNumber type="currency" locale="pt_BR"/>
</h:outputText>

</p:panelGrid>
</p:dialog>

<!-- Carregando ajax -->
<p:blockUI block="dataTable" trigger="dataTable">
Carregando...<br />
<p:graphicImage value="/recursos/img/loading.jpg"/>
</p:blockUI>
<!-- fim carregamento ajax -->

</h:form>
<!-- fim do form -->

</p:layoutUnit>
<!-- fim do conteudo -->

</ui:define>



</ui:composition>

</h:body>
</html>




package daoImp;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import dao.ProdutoDao;
import entidade.Produto;

public class ProdutoDaoImp implements ProdutoDao {

private EntityManagerFactory emf;
private EntityManager getEntityManager(){
return emf.createEntityManager();
}

public ProdutoDaoImp (){
emf = Persistence.createEntityManagerFactory("Projeto_TCC");
}

/**
* Método utilizado para salvar as informações de um produto.
*/
public void cadastrar(Produto produto) {
EntityManager em = getEntityManager();
try {
em.getTransaction().begin();//inicio da transação
em.persist(produto);//persiste no banco
em.getTransaction().commit(); //comita no banco
} catch (Exception e) {
em.getTransaction().rollback(); //recua a transação
}finally{
em.close(); //fecha a transação
}
}

public void atualizar(Produto produto){
EntityManager em=getEntityManager();
try {
// Inicia uma transação com o banco de dados.
em.getTransaction().begin();
em.merge(produto);
em.getTransaction().commit();
} catch (Exception e) {
em.getTransaction().rollback();
em.close();
}
}

/**
* Consulta o produto pelo ID.
*/
//retornar um obj produto
@SuppressWarnings({ "rawtypes", "unused" })
public List consultarPorId(int prodId) {
EntityManager em = getEntityManager();
Produto produto = null;
try {
//Consulta uma categoria pelo seu ID.
produto = em.find(Produto.class, prodId);
} finally {
em.close();
}
return null;
}

@SuppressWarnings("unchecked")
public List<Produto> todosProdutos(){
EntityManager em = getEntityManager();
try {
Query q = em.createQuery("select object(pro) from Produto pro");
return q.getResultList();
}finally{
em.close();
}
}

/*@SuppressWarnings("unchecked")
public List<Produto> todosProdutosProcedure(){

EntityManager em = getEntityManager();
try {
Query q = em.createNativeQuery("CALL sp_totalPro(1);");
System.out.println("Procedure");
return q.getResultList();
}finally{
em.close();
}
}
*/
@Override
public void deletar(Produto produto) {
EntityManager em=getEntityManager();
try {
em.getTransaction().begin();
produto = em.find(Produto.class, produto.getProdId());
em.remove(produto);
em.getTransaction().commit();
} catch (Exception e) {
em.getTransaction().rollback();
em.close();
}
}

}




Samuel Pires

Samuel Pires

Curtidas 0

Respostas

Samuel Pires

Samuel Pires

08/06/2013

O Resto Do Código...

@ManagedBean
@SessionScoped
public class ProdutoControler implements Serializable{


private static final long serialVersionUID = 1L;


private Produto produto = new Produto();
private ProdutoDao produtoDao = new ProdutoDaoImp();
@SuppressWarnings("unchecked")
private List<Produto> listaProdutos = produtoDao.todosProdutos();
private Map<String, Object> categoriaItem = null;
private Categoria categoria = new Categoria();
private CategoriaDao categoriaDao = new CategoriaDaoImp();
private Produto produtoSelecionado = new Produto();


public ProdutoControler(){
this.produto= new Produto();
this.produto.setCategoria(new Categoria());
}


public Produto getProduto() {
return produto;
}


public void setProduto(Produto produto) {
this.produto = produto;
}


public ProdutoDao getProdutoDao() {
return produtoDao;
}


public void setProdutoDao(ProdutoDao produtoDao) {
this.produtoDao = produtoDao;
}


public List<Produto> getListaProdutos() {
return listaProdutos;
}


public void setListaProdutos(List<Produto> listaProdutos) {
this.listaProdutos = listaProdutos;
}


public Map<String, Object> getCategoriaItem() {
return categoriaItem;
}


public void setCategoriaItem(Map<String, Object> categoriaItem) {
this.categoriaItem = categoriaItem;
}


public Categoria getCategoria() {
return categoria;
}


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


public CategoriaDao getCategoriaDao() {
return categoriaDao;
}


public void setCategoriaDao(CategoriaDao categoriaDao) {
this.categoriaDao = categoriaDao;
}


public Produto getProdutoSelecionado() {
return produtoSelecionado;
}


public void setProdutoSelecionado(Produto produtoSelecionado) {
this.produtoSelecionado = produtoSelecionado;
}


public static long getSerialversionuid() {
return serialVersionUID;
}


// preenche o combo com as categorias disponíveis
// no formulário de cadastro de produtos
public Map<String, Object> getCategorias() {

categoriaItem = new LinkedHashMap<String, Object>();

for (Iterator<?> iter = categoriaDao.todasCategorias().iterator(); iter.hasNext();) {
Categoria c = (Categoria) iter.next();
categoriaItem.put(c.getCatNome(), c.getCatId()); //local onde tudo é rotulado, depois o metodo é chamado para criar os itens
}

return categoriaItem;
}


public String novoProduto(){
this.produto = new Produto();
// this.produto.setCategoria(new Categoria());
this.getCategorias(); //O metodo getCategorias Retorna um objeto java.util.Map
return null;
}

public String Cadastrar(){
produtoDao.cadastrar(produto);
FacesMensagens.mensInfo("Salvo Com Sucesso");

return null;
}

public String Deletar(){
produtoDao.deletar(produto);
return "RemoverProduto?faces-redirect=true"; // Quando o item produto é deleta a tela é reenderisada para a propria pagina
}

public String Atualizar(){
Categoria categoria = (Categoria) categoriaDao.consultarPorId(produto.getCategoria().getCatId());
produto.setCategoria(categoria);
produtoDao.atualizar(produto);
return "AtualizarProduto?faces-redirect=true"; // Quando o item produto é Atualizada a tela é reenderisada para a propria pagina

}

public String formAtualizarProduto(){
return "AtualizarProduto?faces-redirect=true";
//quando se usa um redirect a tela é atualizada ou vai para onde vc determinar, com isso os dados seram perdidos caso vc queira aproveitar
// em uma nova pagina.
}

public String formDeletarProduto(){
return "RemoverProduto?faces-redirect=true";

}


public void onEdit(RowEditEvent event) {
Produto p = (Produto) event.getObject();
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Alterardo " + p.getProdNome() + " Alterado", null);
FacesContext.getCurrentInstance().addMessage(null, msg);


}

public void onCancel(RowEditEvent event) {
Produto p = (Produto) event.getObject();
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_INFO, "Cancelado " + p.getProdNome() + " cancelada", null);
FacesContext.getCurrentInstance().addMessage(null, msg);
}





GOSTEI 0
Marcelo Senaga

Marcelo Senaga

08/06/2013

Qual o problema que ocorre? Chega a lançar alguma exceção?
GOSTEI 0
POSTAR