Mensagens de ok em JSF após o commit [Resolvido]

6 respostas
alexfe

Pessoal, estou desenvolvendo uma aplicação usando : Hibernate, JSF, PrimeFaces e Spring. Estou usando o padrão OpenSessionInView para abrir, fechar, commitar e dar rollback nas transações automaticamente através de um Filter.
O problema é que eu não estou conseguindo garantir que a mensagem de “Operação Realizada com Sucesso” seja verdadeira porque no ManagedBean se eu der a mensagem após o Save ela aparece na pagina mas se no momento do commit realizado pelo Filter der uma exceção e ocorrer rollback a mensagem que aparece é realizada com sucesso, mas aconteceu uma execeção, então a mensagem fica sendo falsa.

Preciso de Ajuda para implementar a questão das mensagens para o usuário corretamente.

Ajudas ??

6 Respostas

Hebert_Coelho

Não entendo muito de Spring mas… VocÊ poderia fazer o commit no ManagedBean e deixar apenas o close para o filter?

O

No seu ManagedBean voce chama um metodo do service certo?

Caso sim e só colocar @Transactional no metodo ai a delimitação da transação nao será o filtro.

Caso a chamada desse metodo der erro voce não exibi a mensagem de ok.

alexfe

jakefrog, então tentei fazer o que vc disse, fiz o commit no final do metodo do ManagedBean e apenas o close no filter, mas não deu certo, ocorrem problemas de transação ativa para o carregamento da tela.

Teria como eu idendificar o close ou uma exeção do filter e exibir a mensagem correta ??
Ou alguma outra solução ?

alexfe

Oliveira.caio:
No seu ManagedBean voce chama um metodo do service certo?

Caso sim e só colocar @Transactional no metodo ai a delimitação da transação nao será o filtro.

Caso a chamada desse metodo der erro voce não exibi a mensagem de ok.

Oliveira.caio, sim no meu ManagedBean eu chamado metodos de persistencia criados no controller. Eu conheço pouco de Spring, o que a anotação @Transactional faria realmente ???

alexfe

Existe a possibilidade de identificar o commit ou uma exceção realizado pelo Filter e exibir mensagens de erro ou sucesso ??

alexfe

Pessoal, consegui resolver o problema. Após cada operação de CRUD, ex: save, delete, etc. coloquei para que o Flush do Hibernate fosse chamado.

Criado 21 de abril de 2012
Ultima resposta 23 de abr. de 2012
Respostas 6
Participantes 3