2012-07-19 129 views
0

Im使用Mojarra 2.1.3,Netbeans 7.0.1,primefaces 3.2。JSF2.0 State_Saving_Method客户端问题

我目前处于困境是否使用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属性被声明为transient,并且在回发到同一页面时被销毁。无论如何,ViewScoped托管bean仍然活着。请帮忙,如何解决这个问题?还是我做错了?

有关信息,如果将STATE_SAVING_METHOD设置为服务器,则此功能完美。但浏览器后退按钮的危险使我决定去客户端状态保存选项。此外,服务器上的内存限制也保证了客户端状态保存。

回答

0

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