Ricevo BusyConversationException durante la navigazione tra le pagine del mio progetto jsf. Questo accade principalmente se l'utente prova a navigare verso un'altra pagina durante una chiamata Ajax. Ciò accade anche quando l'utente fa clic su un collegamento subito dopo aver fatto clic su un altro collegamento senza attendere il caricamento della pagina.Come evitare BusyConversationException in jsf
Ad esempio, se l'utente fa clic su più di un collegamento generati tramite un codice simile a quello inferiore, otteniamo sicuramente questa eccezione. Un altro esempio è, diciamo che l'utente inserisce una query su un campo di testo e la nostra applicazione effettua una chiamata ajax per cercare questa query. Durante questa query, se l'utente fa clic su un pulsante per spostarsi su un'altra pagina, si verifica anche BusyConversationException.
<h:commandLink value="#{theProfile.profileName}"
title="#{theProfile.profileName}"
action="#{profileBean.aProfileSelected}">
<f:setPropertyActionListener target="#{currentProfileWebBean.theProfile}" value="#{theProfile}"/>
</h:commandLink>
posso prendere questo tipo di eccezione in una classe ExceptionHandler che si estende classe ExceptionHandlerWrapper ma non posso salvare il mio stato attuale e il meglio che posso fare per questo caso è quello di reindirizzare alla pagina principale quando si verifica questa eccezione .
C'è qualche soluzione per evitare questo? Grazie in anticipo per le risposte e i commenti.
Nota: 'BusyConversationException' non fa parte di JSF. Ho aggiunto il tag CDI. – BalusC
Ci sono più chiamate Conversation.begin in corso? – LightGuard
Anch'io sto avendo questo problema, se è rassicurante, e sono sorpreso da come _few_ persone sembrano averlo (basato su una ricerca sul web). Potrei finire per eliminare i miei fagioli con scope di conversazione e usare scope-scope e view-scope (con l'ambito di visualizzazione CDI fornito da Seam Faces). – Nick