如何计算用户的JSF会话(JSF 2.2)中的视图数量?

时间:2016-02-11 16:25:04

标签: jsf jsf-2.2 omnifaces view-scope

我正在尝试跟踪视图使用情况(违反默认的15个计数限制)但不太确定从何处获取此信息。是否可以在FacesContext中使用它?

使用JSF 2.2,ICEfaces 3.3和Omnifaces 2.2。

1 个答案:

答案 0 :(得分:4)

它的具体实现,仅在使用服务器端状态保存时可用。

根据您的问题记录和您的相关OmniFaces issue report,我认为您正在使用GlassFish,因此使用Mojarra。物理视图可用作com.sun.faces.renderkit.ServerSideStateHelper.LogicalViewMap键入的会话属性。

因此,所以:

Map<String, Map<String, Object[]>> physicalViews = Faces.getSessionAttribute("com.sun.faces.renderkit.ServerSideStateHelper.LogicalViewMap");
String numberOfViews = physicalViews.size();
// ...

请注意,Mojarra无意中交换了&#34;物理视图的含义&#34;和&#34;逻辑视图&#34;在上下文参数名称和代码库中。因此,上面地图的最大尺寸(物理视图)可由com.sun.faces.numberOfLogicalViews配置,嵌套地图的最大尺寸(逻辑视图)可由com.sun.faces.numberOfViewsInSession配置。

另见: