2012-04-04 43 views
2

我有一个使用Primefaces Datatable的页面,基本上ManagedBean查询数据库并在DataTable中显示信息作为报告,并使用选项filterBy进行过滤。如何在Primefaces DataTable上保持会话Filter

信息通过页面刷新自动更新,我的问题是系统重新加载页面时,系统丢失了过滤器中输入的信息,然后用户必须再次在过滤器中键入无用信息。

我需要保持用户输入的信息,然后我认为我需要保持页面过滤器的会话,我认为它可以解决我的问题。

+0

@ sapc1313031你应该将bean作为会话作用域吗? – Kevin 2012-04-04 16:12:25

+0

通常最好避免会话范围,因为它不是后退按钮/新窗口安全。使用JSF 2.0,可以使用诸如View Scope,Flash Scope等替代方法。或者,您可以使用Tomahawk的saveState标记来维护页面请求之间的状态 – BestPractices 2012-04-05 13:53:34

回答

4

似乎PrimeFaces目前不支持保存数据表的过滤器值(截至PF 3.2)。

建议您改为为该列实现一个标题构面,并在其中添加一个绑定到将执行过滤器的支持bean上的方法的输入字段。这样,您就可以在View Scope中存储过滤器字段的值(使用View Scope托管bean或Tomahawk的saveState组件)。请注意,输入字段可以(也许应该)使用ap:ajax组件进行设置,以便当用户更改字段上的值时,将调用backing bean方法,以便过滤器执行与原来相同的操作你使用p:column的filterBy属性来实现它。

我已经完成了上面的工作,当我想要一个过滤器使用弹出日历的日期,它工作得很好。