Ajuda na exclusão de objeto do banco com hibernate e jsf com anotação @RequestScoped

10 respostas
R

Olá pessoal, tenho uma aplicação que estava tudo certo funcionando blza, só que a anotação estava @SessionScoped e eu tive que alterar para @RequestScoped, depois disso minhas exclusões pararam de funcionar. Uso primefaces, hibernate, spring security e banco postegres. @ManagedBean(name = "uploadNotasManagedBean") @RequestScoped public class UploadNotasManagedBean { private CadastroDeDataPagamento cdp = new CadastroDeDataPagamento(); public void excluir(DataPagamento dtPag) throws FalhaDeExclusaoException, FalhaDePesquisaException{ cdp.excluir(dtPag); }

public void excluir(DataPagamento dataPagamento) throws FalhaDeExclusaoException, FalhaDePesquisaException { try { dataPagamentoDao.getSession().beginTransaction(); dataPagamentoDao.delete(dataPagamento); dataPagamentoDao.getSession().getTransaction().commit(); } catch (DAOException e) { e.printStackTrace(); throw new FalhaDeExclusaoException(); } }

public void delete(T entity) throws DAOException { getSession().delete(entity); }

<h:form id="cons"> <p:dataTable id="tabela" value="#{uploadNotasManagedBean.datasPag}" var="dataPag" emptyMessage="Não há registro há exibir!" paginator="true" rows="10" paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" rowsPerPageTemplate="5,10,15"> <f:facet name="header"> Listagem de pagamentos importados, pagos e simulados. </f:facet> <p:column headerText="Excluir"> <p:commandLink action="#{uploadNotasManagedBean.excluir(dataPag)}" update="@(form:last)" value="Excluir" /> </p:column> <p:column headerText="Data de Pagamento"> <h:outputText value="#{dataPag.dataPagamento}" /> </p:column>

10 Respostas

Hebert_Coelho

E qual o erro? Não pode excluir null?

R

Ai que esta o problema, no log não aparece erro nenhum.

Hebert_Coelho

reisah:
Ai que esta o problema, no log não aparece erro nenhum.
O método está sendo chamado?

R

Não, depois que mudei a anotação pra RequestScoped o método de exclusão não é mais chamado.

R

Alguém tem alguma idéia de onde posso estar errando?

R

Só para complementar como ViewScope funciona normalmente, somente com o RequestScope que não chama o método do Bean.

LPJava

Antes de tudo, vc sabe a diferença entre requestScoped e sessionScoped?

R

Acredito que sim, request meus objetos ficam disponíveis apenas no tempo da requisição, assim que é feita uma requisição no form, os objetos deixam de existir, já o session, os objetos ficam armazenados na minha sessão enquanto ela existir, e é esse o problema eu não quero ter que atribuir null em cada vez que chamo um form, ou ainda não quero desperdiçar memória a toa. Se alguém tiver alguma dica ajuda. Obrigado.

LPJava

vc não conseguir resolver isso com requestScoped, após ter submetido o primeiro delete, n vai conseguir submeter o próximo. Um exemplo clássico é vc ter uma tabela e uma coluna com ação deletar, dai vc manda deletar o cara da primeira linha, e depois tenta deletar o da proxima linha vc nao vai conseguir, já foi o seu request. ViewScoped não resolve seu problema?

R

Entendi sua colocação, mas meu problema é que não exclui nem o primeiro delete, simplesmente não chama o metodo no Bean. Quanto ao ViewScoped funciona, e se não achar o meu erro, vou subir a aplicação com essa anotação. Obrigado pelas dicas.

Criado 19 de outubro de 2012
Ultima resposta 23 de out. de 2012
Respostas 10
Participantes 3