0

我正在使用 Mojarra 2.1.3、Netbeans 7.0.1、primefaces 3.2。

我目前很纠结是使用 STATE_SAVING_METHOD 客户端还是服务器。目前我将保存方法设置为客户端。这涉及到我对许多对象的可串行性进行调整。并将瞬态关键字放在无状态外观会话 bean 上。

@ManagedBean
@ViewScoped
public class SaProductController implements Serializable {
@EJB
transient SaProductFacade saProductFacade;
@EJB
transient SaKeywordFacade saKeywordFacade;
....

我的 xhtml 页面有一个带有分页的 primefaces 数据表。第一次加载页面时,它通过在数据表中显示第一页来工作。但是,单击下一页时,此行会引发 NullPointerException 错误。

data = saProductFacade.selectAll(first, pageSize);

这是为什么?是否因为 saProductFacade @EJB 属性声明为瞬态,并且在回发到同一页面时被销毁。无论如何,ViewScoped 托管 bean 仍然存在。请帮忙,如何解决这个问题?还是我做错了?

有关信息,如果我将 STATE_SAVING_METHOD 设置为服务器,这将非常有效。但是浏览器后退按钮的危险使我决定使用客户端状态保存选项。而且,服务器上的内存限制保证了客户端状态的保存。

4

1 回答 1

0

仅供参考,对于初学者,我现在使用服务器状态保存方法。如果用户按下后退按钮,我使用会话变量来记住我在哪里。这样,ViewScoped 支持 bean 被重新创建并自动分页到用户上次查看的页面。这样我就可以在用户使用 GET HTTP 请求导航到另一个页面之前将用户重定向到他们最后一个数据表页面所在的位置。

于 2012-07-29T05:25:28.133 回答