我正在使用 Primefaces 3.4.1、Jboss AS 7.1 和 MyFaces CODI 编写应用程序。我遇到的问题是我正在使用 CODI 提供的对话范围,一旦对话结束,我需要一种方法来处理浏览器的后退按钮。
更准确地说 - 当对话结束并且用户在不同的页面上时(想想它就像一个向导完成并提交到数据库)如果按下后退按钮我收到以下异常:
javax.ejb.EJBTransactionRolledbackException
理想情况下,由于对话已完成,我希望将其重定向回其他页面(菜单、仪表板)。
这可以通过 JSF 2.0 导航规则来完成吗?
编辑:
我创建了这样的导航规则:
<navigation-rule>
<from-view-id>/page1.xhtml</from-view-id>
<navigation-case>
<from-outcome>outcome1</from-outcome>
<to-view-id>/page2.xhtml</to-view-id>
<redirect/>
</navigation-case>
<navigation-case>
<from-outcome>*</from-outcome>
<to-view-id>/dashboard.xhtml</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
如果我们按下后退按钮,希望这将重定向到dashboard.xhtml。我假设当您按下它时,后端会触发不同的操作。显然我假设错了。有什么方法可以使用这些案例捕获 bakc 按钮发送的任何内容吗?可能带标签?
更新 1:
显然浏览器的后退按钮不会触发 JSF 导航案例。是否清楚它会触发什么?我实现了以下过滤器:https : //stackoverflow.com/a/10305799/1611957 它现在会触发什么?这会让捕捉它的工作变得更容易吗?