Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 2 JSF2.0状态保存方法客户端问题_Jsf 2_Primefaces_Ejb 3.0_Managed Bean_Facade - Fatal编程技术网

Jsf 2 JSF2.0状态保存方法客户端问题

Jsf 2 JSF2.0状态保存方法客户端问题,jsf-2,primefaces,ejb-3.0,managed-bean,facade,Jsf 2,Primefaces,Ejb 3.0,Managed Bean,Facade,Im使用Mojarra 2.1.3、Netbeans 7.0.1和primefaces 3.2 我目前正处于两难境地,是使用STATE\u SAVING\u方法客户端还是服务器。当前Im正在将保存方法设置为客户端。这涉及到我对许多对象的可系列性进行调整。以及在无状态facade会话bean上放置transient关键字 @ManagedBean @ViewScoped public class SaProductController implements Serializable { @EJB

Im使用Mojarra 2.1.3、Netbeans 7.0.1和primefaces 3.2

我目前正处于两难境地,是使用STATE\u SAVING\u方法客户端还是服务器。当前Im正在将保存方法设置为客户端。这涉及到我对许多对象的可系列性进行调整。以及在无状态facade会话bean上放置transient关键字

@ManagedBean
@ViewScoped
public class SaProductController implements Serializable {
@EJB
transient SaProductFacade saProductFacade;
@EJB
transient SaKeywordFacade saKeywordFacade;
....
我的xhtml页面有一个带分页的primefaces数据表。第一次加载页面时,它通过在datatable中显示第一个页面来工作。但是,单击下一页时,这几行会抛出NullPointerException错误

data = saProductFacade.selectAll(first, pageSize);
为什么呢?这是因为saProductFacade@EJB属性声明为transient,并在回发到同一页面时被销毁。ViewScope托管bean仍处于活动状态。请帮忙,如何解决这个问题?还是我做错了


作为参考,如果我将STATE\u SAVING\u方法设置为server,这将非常有效。但是浏览器后退按钮的危险使我决定使用客户端状态保存选项。而且,服务器上的内存限制也保证了客户端状态的保存。

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