Fala galera!
Preciso fazer com que quando o usuário sair de uma determinada página, (seja clicando em outro lugar do sistema, ou indo pra outro site, ou fechando o browser) eu grave uma informação no banco de dados (log).
Acho que o <p:ajax> consegue fazer isso né?
Como eu poderia fazê-lo?
tente assim:
<body onunload="leavingPage()">
<a4j:jsFunction name="leavingPage" action="#{myBean.myMethod}"/> // exemplo em richfaces, acho que é facil adaptar
fonte: stack overflow, http://stackoverflow.com/questions/9983904/is-there-a-way-to-call-a-method-upon-leaving-a-page-with-jsf-or-primefaces
tente assim:
<body onunload="leavingPage()">
<a4j:jsFunction name="leavingPage" action="#{myBean.myMethod}"/> // exemplo em richfaces, acho que é facil adaptar
fonte: stack overflow, http://stackoverflow.com/questions/9983904/is-there-a-way-to-call-a-method-upon-leaving-a-page-with-jsf-or-primefaces
Para fazer logout você não chama nenhum método que irá fazer session.invalidate() não?
Se chama, você pode fazer o registro no DB nesse exato momento.
Sim, eu tenho um método que faz o logout.
Mas na verdade eu preciso fazer isso em outro momento.
Em um momento onde a página web está fazendo algum processamento e por algum motivo o usuário interrompa isso.
Ele pode até interromper mas precisa ser registrado.
Perfeita a solução do <h:body unonload=“event()”>.
Nem precisei usar ajax! 