在 XPage 打开时设置 SessionScope

Setting SessionScope on XPage open

我有一个 Xpage,其中有一个视图显示基于 xpage 上 6 个字段值的搜索结果(这些值在选择时分配给 sessionscope 变量,这会在搜索时驱动视图选择按钮被击中)。这一切都很好,但我想改变的是,最初打开 xpage 时视图是空的(在设置任何值之前)。

对于这个简单的问题表示歉意,但我自 2006 年以来就没有触及笔记,并且从那时起它发生了相当大的变化。

运行 8.5.2.

使用 viewScope 代替 sessionScope。

viewScope 变量在当前浏览器选项卡中的当前 XPage 期间存在。如果您打开另一个 XPage 或在另一个选项卡中打开当前 XPage,则 viewScope 变量的值将消失。这就是您所需要的。

sessionScope 变量在浏览器中跨所有浏览器选项卡的用户会话期间持续存在。这就是为什么您当前的搜索值在另一个浏览器选项卡中设置为默认值。

每个 bean 在范围为 "initiated" 时被实例化。对于 sessionScope,这是在您首次打开网站时。对于 viewScope,它是您第一次打开页面时(将在部分刷新后继续存在)。这些范围内的变量只是该范围内的映射(即 beans)。

因此,要设置初始值,您可以使用真正的 bean - 并在其构造函数中添加您需要的任何代码。

或者,如果您想使用 SSJS,您可以在加载页面时添加检查(例如在 beforePageLoad 事件中)。如果你在 sessionScope 中工作,你应该检查是否已经设置了一个值 - 如果没有 -> 设置它。在 viewScope 中,您只需启动变量。

再说说作用域。如果可能的话,为了 performance/scalability 目的,你应该总是更喜欢 "shorter" 定时范围。在 my article about tuning XPages 中查看更多关于使用 sessionScope 的信息:-)

/约翰