我正在使用 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 设置为服务器,这将非常有效。但是浏览器后退按钮的危险使我决定使用客户端状态保存选项。而且,服务器上的内存限制保证了客户端状态的保存。