假设我有一个包含四个页面的交易应用程序:
假设通过POST的请求参数从(1)传递到初始化在(2)上创建的会话。
应用程序在页面(2) - (3)上有取消按钮和提交按钮。这两个操作都应该触发数据重置,其中应该重置请求/会话/页面中保留的任何先前值。
显而易见的解决方案是在提交按钮(3)上的actionListener中清除会话值,但如果我这样做,我将不会在确认页面(4)中显示这些值。
另一个解决方案是在进入应用程序之前清除数据但如果我这样做,我可能会丢失请求参数。
我错过了一些明显的东西吗?在像我这样的交易应用程序中重置数据的最佳位置是什么。
答案 0 :(得分:0)
对于取消按钮,在对应的“取消”UICommand按钮上设置立即为true允许我关联相应的ActionListener,该ActionListener将在同意退出时清除任何绑定数据bean的“值”。此ActionListener只是使托管bean失效。
对于确认问题,我最终使用了一个自定义的“导航器”框架,该框架保证用户离开它后无法导航回确认页面(或任何子流程)(即通过单击链接在确认页面上。)
这种情况下的清理是在进入而不是退出时进行的,因为用户很容易将url简单地更改为其他内容,在这种情况下,jsf hooks的任何javascript都不适用。 “导航器”框架确保用户无法返回已失效的流程或进入流程的中间。
据我所知,假设使用FlashScope,JSF 2.0已经简化了很多这方面的工作。我也明白Spring WebFlow也可以提供类似的功能。不幸的是,我所说的问题域是使用jsf 1.1,其中在UI中使用spring不是一种选择。