【发布时间】:2012-10-14 19:29:04
【问题描述】:
我正在使用 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 现在会触发什么?这会让捕捉它的工作变得更容易吗?
【问题讨论】:
-
我不确定什么对 CODI 有用,但我可以告诉你后退按钮将不会触发 JSF 导航过程
-
所以 JSF Navigation 过程不是那么要走的路。还有其他想法吗?
标签: jsf jakarta-ee jsf-2 primefaces navigation