【发布时间】:2015-04-09 10:25:08
【问题描述】:
我在 beforePageLoad 中检查 XPage 中的 sessionScope 变量,如果它为 null,则将其设置为随机值。
由于某种原因,它通常等于 null,因此我不断丢失变量,即使我将数据库中的会话超时设置为 90 分钟,也会丢失 5 分钟。
我尝试了 ExtLib KeepSessionAlive,设置为 180 秒,没有运气。我也试过这里的代码:
这似乎也不起作用。这是一个测试服务器,所以没有任何负载。到目前为止,我一直发现 sessionScope 变量非常可靠。我做错了什么?
var cartID = sessionScope.cartID;
if (cartID == null) {
sessionScope.cartID = @Unique();
}
【问题讨论】:
-
显示你的代码。这是一个疯狂的猜测:您是否偶然在 if 语句中使用单个等号进行检查。 if(yourValue = null){ 然后重置变量}。这不会给您错误,但会将值分配给 null。您希望双等于检查它是否为空。我以前做过。
-
在引用 sessionScope 变量的任何地方都可能使用单等号而不是双等号。这很容易被忽视。搜索名称并检查每个参考。
-
已添加代码。该代码大部分时间都运行良好。仅偶尔会在经过一段时间后或在切换页面时重置变量。
-
代码中是否还有其他地方也将 sessionScope.cartID 设置为其他内容?搜索“cartID =”进行检查。
-
我实际上已经用 2 个页面进行了测试,除了与上面相同的代码以及用于在页面之间切换的链接之外,没有任何内容。发生同样的事情,所以我认为它要么是服务器问题,要么是错误。现在我不知道该怎么办......
标签: xpages session-scope