javaCBA
Fevereiro 17, 2011, 10:45pm
#1
pessoal,
alguem sabe como atualizar o datatable do primefaces ao fazer uma exclusão?
O codigo ta excluindo no banco, mas não consegue atualizar a tabela…mesmo eu chamando o metodo de listar novamente
segue meu MB
public void remove()
{
InitialContext contexto = new InitialContext();
ChequeFacade cheque = (ChequeFacade) contexto.lookup("ChequeBean/remote"); //chamo meu EJB
cheque.excluirCheque(chequeVo);
chequeVo = new ChequeVo();
listaCheque = getListaCheque();
}
dentro do meu EJB:
ChequeVo chequeASerRemovido = em.find(ChequeVo.class, chequeVo.getCodigo());
if((chequeASerRemovido != null) && (chequeASerRemovido.getCodigo() > 0))
{
em.remove(chequeASerRemovido);
}
no jsf:
<h:commandLink action="#{chequeMB.remove}">
<f:ajax render="@form"/>
<img />
<f:setPropertyActionListener value="#{cheque}" target="#{chequeMB.chequeVo}"/>
</h:commandLink>
ta removendo no banco, mas mesmo eu apertando CTRL+ F5, eu digitando o endereço novamente, ele não atualiza.
alguem sabe pq? :x
luxu
Fevereiro 17, 2011, 11:38pm
#2
Axo q vc tem q usar o binding…veja como aprendi numa video-aula…
listagem-alunos.jsp
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://jsftutorials.net/htmLib" prefix="htm" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c"%>
<%@ taglib uri="http://myfaces.apache.org/trinidad" prefix="tr" %>
<!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:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link rel="stylesheet" href="css/principal.css" type="text/css" />
</head>
<f:view>
<htm:div id="divPrincipal" >
<c:import url="cabecalho.jsp">
<c:param name="titulo" value="Studio Pilates - Listagem de Alunos"></c:param>
</c:import>
<c:import url="voltar.jsp"></c:import>
<h:form id="formListagemAlunos">
<tr:subform id="consultarAlunos">
<htm:div styleClass="corpoEsquerda">
<h:commandButton
id="incluirNovoAluno"
action="#{alunoBean.novoAluno}"
value="Incluir Novo"
styleClass="panelBotaoAdicionar">
</h:commandButton>
<h:panelGrid columns="1" styleClass="panelGrid">
<h:panelGrid columns="2" width="100%" columnClasses="colunaDireita, colunaEsquerda">
<h:outputText value="Nome:" ></h:outputText>
<h:inputText id="inputNomeFornecedor" value="#{entradaAlunosBBean.aluno.nome}" converter="stringNull"></h:inputText>
</h:panelGrid>
<h:commandButton id="consultarFornecedor" value="Consultar" styleClass="panelBotaoConsultar"/>
</h:panelGrid>
</htm:div>
</tr:subform>
<htm:div style="overflow:auto; width:100%; height:400px;" styleClass="corpoEsquerda">
<t:dataTable
id="listaAlunos"
styleClass="dataTableProdutos"
width="90%"
value="#{entradaAlunosBBean.alunos}"
var="aluno"
rowClasses="linhaClara, linhaEscura"
binding="#{alunoBean.dataTableAluno}">
<t:column sortable="true" sortPropertyName="nome">
<f:facet name="header"><h:outputText value="Nome"></h:outputText></f:facet>
<h:outputText value="#{aluno.nome}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="cidade">
<f:facet name="header"><h:outputText value="Cid" title="Cidade"></h:outputText></f:facet>
<h:outputText value="#{aluno.cidade.codigo}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="endereco">
<f:facet name="header"><h:outputText value="End." title="Endereço"></h:outputText></f:facet>
<h:outputText value="#{aluno.endereco}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="numero">
<f:facet name="header"><h:outputText value="Num." title="numero"></h:outputText></f:facet>
<h:outputText value="#{aluno.numero}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="complemento">
<f:facet name="header"><h:outputText value="Compl" title="complemento"></h:outputText></f:facet>
<h:outputText value="#{aluno.complemento}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="bairro">
<f:facet name="header"><h:outputText value="Bairro"></h:outputText></f:facet>
<h:outputText value="#{aluno.bairro}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="cep">
<f:facet name="header"><h:outputText value="CEP"></h:outputText></f:facet>
<h:outputText value="#{aluno.cep}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="foneres">
<f:facet name="header"><h:outputText value="Res." title="Fone Residencial"></h:outputText></f:facet>
<h:outputText value="#{aluno.foneres}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="fonecom">
<f:facet name="header"><h:outputText value="Com." title="Fone Comercial"></h:outputText></f:facet>
<h:outputText value="#{aluno.fonecom}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="cel">
<f:facet name="header"><h:outputText value="Cel." title="Celular"></h:outputText></f:facet>
<h:outputText value="#{aluno.fonecel}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="sexo">
<f:facet name="header"><h:outputText value="Sexo"></h:outputText></f:facet>
<h:outputText value="#{aluno.sexo}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="idade">
<f:facet name="header"><h:outputText value="Idade"></h:outputText></f:facet>
<h:outputText value="#{aluno.idade}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="email">
<f:facet name="header"><h:outputText value="e-Mail"></h:outputText></f:facet>
<h:outputText value="#{aluno.email}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="dtnasc">
<f:facet name="header"><h:outputText value="DtNasc" title="Data de Nascimento"></h:outputText></f:facet>
<h:outputText value="#{aluno.nascimento}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="dtcad">
<f:facet name="header"><h:outputText value="DtCad" title="Data de Cadastro"></h:outputText></f:facet>
<h:outputText value="#{aluno.cadastro}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="dtsaida">
<f:facet name="header"><h:outputText value="DtSaida" title="Data de Saida"></h:outputText></f:facet>
<h:outputText value="#{aluno.demissao}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="peso">
<f:facet name="header"><h:outputText value="Peso"></h:outputText></f:facet>
<h:outputText value="#{aluno.peso}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="altura">
<f:facet name="header"><h:outputText value="Alt." title="altura" ></h:outputText></f:facet>
<h:outputText value="#{aluno.altura}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="rg">
<f:facet name="header"><h:outputText value="RG"></h:outputText></f:facet>
<h:outputText value="#{aluno.rg}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="cpf">
<f:facet name="header"><h:outputText value="CPF"></h:outputText></f:facet>
<h:outputText value="#{aluno.cpf}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="obs">
<f:facet name="header"><h:outputText value="OBS"></h:outputText></f:facet>
<h:outputText value="#{aluno.obs}"></h:outputText>
</t:column>
<t:column sortable="true" sortPropertyName="desconto">
<f:facet name="header"><h:outputText value="Desc" title="desconto"></h:outputText></f:facet>
<h:outputText value="#{aluno.desconto}"></h:outputText>
</t:column>
<h:column>
<f:facet name="header">
<h:outputText value="Editar"></h:outputText>
</f:facet>
<h:commandButton styleClass="panelBotaoEditar" value="Editar" action="#{alunoBean.editarAluno}">
</h:commandButton>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Excluir"></h:outputText>
</f:facet>
<h:commandButton styleClass="panelBotaoSubtrair" value="Excluir" action="#{alunoBean.excluirAluno}"
onclick="return confirm('Confirma a exclusão do aluno?');">
</h:commandButton>
</h:column>
<f:facet name="footer">
<h:outputText
value="Não há alunos!"
rendered="#{empty entradaAlunosBBean.alunos}"/>
</f:facet>
</t:dataTable>
</htm:div>
</h:form>
</htm:div>
</f:view>
</html>
meu alunoBean
package br.com.luxu.controller;
import javax.faces.component.html.HtmlDataTable;
import br.com.luxu.DAO.HibernateDAO;
import br.com.luxu.DAO.InterfaceDAO;
import br.com.luxu.classe.Aluno;
import br.com.luxu.classe.Cidade;
import br.com.luxu.util.FacesContextUtil;
public class AlunoBean {
private Aluno aluno = new Aluno();
private int cid_Codigo;
private HtmlDataTable dataTableAluno;
public void setCid_Codigo(int cid_Codigo) {
this.cid_Codigo = cid_Codigo;
}
public int getCid_Codigo() {
return cid_Codigo;
}
public void setAluno(Aluno aluno) {
this.aluno = aluno;
}
public Aluno getAluno() {
return aluno;
}
public String novoAluno(){
return "entradaAlunos";
}
public void salvarAluno(){
InterfaceDAO<Aluno> alunoDAO = new HibernateDAO<Aluno>(Aluno.class, FacesContextUtil.getRequestSession());
Cidade cidade = new Cidade();
cidade.setCodigo(this.getCid_Codigo());
this.getAluno().setCidade(cidade);
alunoDAO.salvar(aluno);
}
public String alterarAluno(){
InterfaceDAO<Aluno> alunoDAO = new HibernateDAO<Aluno>(Aluno.class, FacesContextUtil.getRequestSession());
Cidade cidade = new Cidade();
cidade.setCodigo(this.getCid_Codigo());
this.getAluno().setCidade(cidade);
alunoDAO.atualizar(aluno);
return "alterado";
}
public String excluirAluno(){
Aluno alunoExcluir = (Aluno) getDataTableAluno().getRowData();
InterfaceDAO<Aluno> alunoExcluirDAO = new HibernateDAO<Aluno>(Aluno.class, FacesContextUtil.getRequestSession());
alunoExcluirDAO.excluir(alunoExcluir);
return null;
}
public String editarAluno(){
this.aluno = (Aluno) getDataTableAluno().getRowData();
return "editarAlunos";
}
public String confirmarCidade(){
InterfaceDAO<Cidade> cidadeDAO = new HibernateDAO<Cidade>(Cidade.class, FacesContextUtil.getRequestSession());
return null; // permanece na mesma pagina
}
public void setDataTableAluno(HtmlDataTable dataTableAluno) {
this.dataTableAluno = dataTableAluno;
}
public HtmlDataTable getDataTableAluno() {
return dataTableAluno;
}
}
javaCBA
Fevereiro 18, 2011, 8:47am
#3
pelo que eu sei, o binding é feito para pesquisas. Ou ta errado meu pensamento? rs
o id chega no meu MB…passa para o meu ejb, e remove. O problema é que não atualiza de jeito nenhum a tabela.
Mesmo eu atualizando, abrindo em outro browser, etc.
Ele só exibe corretamente se eu dar um shutdown no jboss e startar ele de novo. Como se fosse algo da sessão, mas eu to usando ViewScope.
javaCBA
Fevereiro 18, 2011, 8:48am
#4
ahh esqueçi de dizer, quando faço alteração…a tabela é atualizada corretamente. Atualiza meu form do datatable e aparece certinho.
luxu
Fevereiro 18, 2011, 9:44am
#5
entaum tá fácil amigo…v como fez na alteração e faz o msm pra exclusão…bom pelo q sei e uso aki o binding é pra fazer a comunicação entre a página e os beans de controle…
javaCBA
Fevereiro 18, 2011, 11:20am
#6
mas ta igual, por isso to com duvida rs
javaCBA
Fevereiro 18, 2011, 11:26am
#7
na minha pagina ta assim:
[code] <h:commandLink “>
<f:ajax render=”@form "/>
<f:setPropertyActionListener value="#{cheque}" target="#{chequeMB.chequeVo}"/>
</h:commandLink>[/code]
e no meu EJB:
ChequeVo chequeASerAlterado = em.find(ChequeVo.class, chequeVo.getCodigo());
if((chequeASerAlterado != null) && (chequeASerAlterado .getCodigo() > 0))
{
em.merge(chequeASerAlterado );
}
javaCBA
Fevereiro 19, 2011, 3:06pm
#8
luxu, consegui resolver “por um lado” kkkk
eu tava usando isso no metodo listar:
public List<ChequeVo> getListaCheques()
{
if(listaCheque == null)
{
ChequeFacade cheque = getObjeto();
listaCheque = cheque.listarCheques();
}
return listaCheque;
}
porque se eu não me engano, o jsf 2 tem um bug. Pelo que sei ele tem varias fases…e qdo vc solicita uma consulta, ele faz 6 consultas por tras do código.
Como se cada camada fizesse uma requisição pro banco. E eu fiz essa condição if para segurar todas essas requisições.
Quando eu tiro ela, tanto meu alterar, meu remover e meu incluir funcionam perfeitamente
Agora vem a pergunta: como eu resolvo esse problema de várias consultas numa única requisição do jsf?
:?: