我在浏览 jsf 项目中的页面时遇到 BusyConversationException。如果用户在 ajax 调用期间试图导航到另一个页面,这通常会发生。当用户在单击另一个链接后立即单击一个链接而不等待页面加载时,也会发生这种情况。
例如,如果用户点击了多个链接,这些链接是通过类似于下面的代码生成的,我们肯定会得到这个异常。另一个例子是,假设用户在文本字段中输入查询,我们的应用程序发出 ajax 调用来搜索此查询。在该查询期间,如果用户单击某个按钮导航到另一个页面,也会发生 BusyConversationException。
<h:commandLink value="#{theProfile.profileName}"
title="#{theProfile.profileName}"
action="#{profileBean.aProfileSelected}">
<f:setPropertyActionListener target="#{currentProfileWebBean.theProfile}" value="#{theProfile}"/>
</h:commandLink>
我可以在扩展 ExceptionHandlerWrapper 类的 ExceptionHandler 类中捕获这种类型的异常,但我无法保存当前状态,对于这种情况,我能做的最好的事情就是在发生此异常时重定向到主页。
有什么办法可以避免这种情况吗?提前感谢您的回答和评论。