我已经将web.xml中会话属性中的逻辑视图和视图的#定义为1,因此只有最多1个视图。鉴于此,我有几个问题:
-
这个#是特定于给定用户的吗?这是否将每个用户的视图数限制为1 ?**如果是,是否可以在多个用户之间有相同JSP的多个视图表示?
-
是否有一种方法可以跨用户共享JSF视图(假设视图相当通用并且不包含任何用户特定的数据)?
谢谢!
如果你对"用户"的一般定义实际上等于" HTTP会话",那么是的,你是对的。视图基本上存储在HTTP会话中,并由名称为javax.faces.ViewState
的隐藏HTML输入字段引用。不同的HTTP会话不会彼此共享它们的视图,否则这显然是一个巨大的错误和安全漏洞。
通过将会话中的(逻辑)视图数量设置为1
,您可以消除用户在同一会话中不同窗口/选项卡中使用包含POST表单的多个视图的可能性。每次终端用户打开一个新的窗口/选项卡,终端用户将收到一个ViewExpiredException
每当终端用户在前一个窗口/选项卡中触发POST请求,因为你已经配置它只保留一个视图在会话中,这是最后打开的一个。