清除JSF中的会话数据

时间:2010-10-10 06:33:36

标签: web-applications jsf

假设我有一个包含四个页面的交易应用程序:

  1. 使用POST参数初始化应用程序的原始页面
  2. 捕获数据附加数据的交易页面
  3. 审核数据的审核页面
  4. 确认提交数据的确认页面
  5. 假设通过POST的请求参数从(1)传递到初始化在(2)上创建的会话。

    应用程序在页面(2) - (3)上有取消按钮和提交按钮。这两个操作都应该触发数据重置,其中应该重置请求/会话/页面中保留的任何先前值。

    显而易见的解决方案是在提交按钮(3)上的actionListener中清除会话值,但如果我这样做,我将不会在确认页面(4)中显示这些值。

    另一个解决方案是在进入应用程序之前清除数据但如果我这样做,我可能会丢失请求参数。

    我错过了一些明显的东西吗?在像我这样的交易应用程序中重置数据的最佳位置是什么。

1 个答案:

答案 0 :(得分:0)

对于取消按钮,在对应的“取消”UICommand按钮上设置立即为true允许我关联相应的ActionListener,该ActionListener将在同意退出时清除任何绑定数据bean的“值”。此ActionListener只是使托管bean失效。

对于确认问题,我最终使用了一个自定义的“导航器”框架,该框架保证用户离开它后无法导航回确认页面(或任何子流程)(即通过单击链接在确认页面上。)

这种情况下的清理是在进入而不是退出时进行的,因为用户很容易将url简单地更改为其他内容,在这种情况下,jsf hooks的任何javascript都不适用。 “导航器”框架确保用户无法返回已失效的流程或进入流程的中间。

据我所知,假设使用FlashScope,JSF 2.0已经简化了很多这方面的工作。我也明白Spring WebFlow也可以提供类似的功能。不幸的是,我所说的问题域是使用jsf 1.1,其中在UI中使用spring不是一种选择。