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
JSF2和x2B;Spring:查看作用域bean未在后退按钮上还原?_Spring_Jsf 2_Primefaces_Back Button_Managed Bean - Fatal编程技术网

JSF2和x2B;Spring:查看作用域bean未在后退按钮上还原?

JSF2和x2B;Spring:查看作用域bean未在后退按钮上还原?,spring,jsf-2,primefaces,back-button,managed-bean,Spring,Jsf 2,Primefaces,Back Button,Managed Bean,我有一个显示目录中文件夹的页面。它的工作原理与Windows资源管理器类似,但“我的页面”使用数据表显示文件夹。当用户通过单击文件夹名称钻取文件夹时,我将重新显示相同的页面,但带有一个新的备份bean实例和新数据。backbean是一个视图范围的bean。它是一个使用Spring自定义视图范围的Spring托管bean,而不是JSF托管bean。当我使用“浏览器返回”按钮返回此页面时,浏览器会发出GET请求以重新呈现该页面 问题是,在浏览器背面,我希望页面呈现与我所在的最后一个文件夹有关的数据,

我有一个显示目录中文件夹的页面。它的工作原理与Windows资源管理器类似,但“我的页面”使用数据表显示文件夹。当用户通过单击文件夹名称钻取文件夹时,我将重新显示相同的页面,但带有一个新的备份bean实例和新数据。backbean是一个视图范围的bean。它是一个使用Spring自定义视图范围的Spring托管bean,而不是JSF托管bean。当我使用“浏览器返回”按钮返回此页面时,浏览器会发出GET请求以重新呈现该页面


问题是,在浏览器背面,我希望页面呈现与我所在的最后一个文件夹有关的数据,而不是当前文件夹。当前,当我点击browser back按钮时,会创建一个新的bean实例,并使用当前文件夹(保存在会话中)初始化自身。我希望我的视图范围bean可以在返回按钮提交时恢复(即,不是创建新实例),但我意识到这可能是不可能的,因为它是一个Spring管理的bean。关于如何将bean与viewId一起缓存在页面上,或者切换到使用JSF管理的bean会有什么不同。如果可能的话,我更喜欢前一种方法,但我很想知道后一种方法是否有效。

这完全符合设计要求

如果要处理基于请求的参数,那么应该在URL中提供请求参数。例如,
page.xhtml?folder=foo
。您可以使用
创建带有参数的链接,也可以使用
将其设置为bean属性

另见:

我不认为JSF或Spring中的Bean scope有什么关系。当您将
@viewscoped
从JSF移植到Spring时,它应该在这两种情况下都能工作,并且继承了相同的属性。请稍等,我几乎可以肯定您是这样使用ViewScope的,但这会导致内存泄漏(以及@PreDestroy支持的缺失)。在这里,您可以获得经过生产测试的版本-@MichailNikolaev我从未听说Spring的范围管理存在内存泄漏。我正在定义ViewScope,就像链接描述的那样。我在Stackoverflow和其他著名网站上看到的所有地方都指向在Spring中定义自定义ViewScope的方法。我想我对这种说法有点怀疑。@citress,它不是Spring中的泄漏,而是在自定义ViewScope实现中的泄漏。当视图被删除时,ViewScope不会从Spring上下文中删除bean。因此,Spring对JSF视图范围一无所知。每次在视图范围内创建新bean时,您都会要求Spring这样做。所以,当一些视图被清除时,spring不知道它,它将无限地管理bean。查看其他人报告的问题-第一个链接特别有用。谢谢