0

我有一个大的 Richfaces 树,可以选择树中的每个元素,通过 AJAX 加载内容并进行编辑,从而将您重定向到新页面。这一直很好,直到我有一个特别大的文档我正在处理并且保存不再起作用。您被重定向到显示正确内容的编辑页面,但尝试“保存”任何编辑导致 ViewExpiredException。

我尝试调整了很多参数,最终得到了两个修复它的参数:

com.sun.faces.numberOfViewsInSession
com.sun.faces.numberOfLogicalViews

据我所见,每个的默认值为 15,我将它们设置为荒谬的 500,然后应用程序再次运行。不幸的是,因为我不知道问题出在哪里,而且它是一个大型应用程序,所以我无法向您展示任何相关代码。

但问题是:这些参数究竟做了什么,什么可能导致我遇到这些异常以及什么是可接受的值?

更新

我不完全确定为什么这个问题被否决了,但如果是关于所谓的重复:我通过谷歌找到了那个帖子,但它提供的链接已经死了。除了参数的沼泽标准(和模糊)定义外,似乎没有太多关于它们的信息。

4

1 回答 1

1

当使用服务器端状态保存(默认)时,这两个参数可用于配置逻辑视图和实际视图的最大数量。

逻辑视图是在每个 GET 请求上创建的顶级视图(例如,当您在新的浏览器窗口或选项卡中打开页面时,在浏览器的地址栏中输入地址时,iframe ......)。每个逻辑视图可以有一些关联的实际视图。实际视图是在用户使用标准 JSF 机制浏览您的页面时创建的(例如,如果您导航到从中的action方法返回的页面commandButton)。两个视图队列都使用 LRU 算法来决定何时删除视图,并且这些队列的最大数量受这两个参数值的限制。

因此,com.sun.faces.numberOfViewsInSession定义每个逻辑视图的会话中存储的 JSF 视图的最大数量,并com.sun.faces.numberOfLogicalViews定义每个会话存储的逻辑视图的最大数量。

根据您提供的信息,怀疑配置com.sun.faces.numberOfViewsInSession解决了您的问题,但您必须进一步调查为什么会创建这么多视图。

附加链接:

于 2013-02-22T14:22:53.563 回答