0

我有一个多页申请表(jsf 1.2),带有用于导航的下一个和上一个按钮。这些页面应符合以下要求。

1) 应该允许用户在这些页面上来回移动,即使是部分填充的页面。强制字段验证不应阻止他在屏幕之间移动。

2)他在页面上输入的数据也应在他返回该页面时恢复。

在错误情况下,jsf 将始终回发到同一个视图,但我通过在流程验证回调后使用阶段侦听器内的导航处理程序解决了这个问题。

但是如何在渲染新页面之前保存当前状态。我尝试在渲染阶段之前在 UIView 上调用 saveState,但这没有用。我该如何解决这个问题?

解决这些要求的最佳方法是什么。我非常感谢对此的回答。谢谢。

约束:我必须在 jsf 1.2 中解决这个问题,不能使用 jsf 2.0 会话状态或第三方解决方案,如战斧 savestate :(

4

1 回答 1

0

如果您只需要坚持使用 JSF 1.2,那么您就做不到。您必须将您在 bean 中处理的所有数据保存到会话中,并在 bean 构造函数中恢复所有内容。如果您可以使用第三方库,我会推荐您 RichFaces 3.3.3,它有一个KeepAlive注释,您可以将其放在您的请求托管 bean 上并将其转换为 ViewBean(通过将整个请求 bean 保存在会话中并加载它如果你在同一个视图中)。

注释示例KeepAlive(看起来很简单):

@KeepAlive
public class MyViewWannaBeBean {
    private String name;
    public MyViewWannaBeBean() {
    }
    //getters and setters...
}

在 faces-config.xml 中定义 bean,就像一个请求管理的 bean

<managed-bean>
    <managed-bean-name>myViewWannaBe</managed-bean-name>
    <managed-bean-class>mypackage.MyViewWannaBeBean</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
于 2012-06-15T01:28:48.187 回答