XPages - 设置viewScope值的客户端代码?

时间:2013-05-29 13:26:12

标签: xpages

我有一个按钮,点击该按钮我有客户端代码来设置viewScope值:

  var val = 'TEST_VALUE';
  "#{javascript: viewScope.testVal = " + val + "}" 

在该按钮的服务器端,我试图获取viewScope值:

print("ViewScope val " + viewScope.testVal); 

变量名称不是变量值,而是存储在ViewScope

1 个答案:

答案 0 :(得分:5)

CSJS中的SSJS是在呈现页面时在服务器上计算的,并且SSJS被替换为结果。所以你是CSJS没有运行SSJS。由于它是客户端的本质,浏览器不能运行服务器端代码。因此,您可以将SSJS的结果包含在一个CSJS中,但自上次在服务器上重新计算SSJS并传递给浏览器后,它不会更新值。

您无法通过CSJS(客户端JS)更新viewScope变量,因为viewScope变量仅保留在服务器上。它是服务器端Map,而不是客户端浏览器cookie。因此,它只能通过服务器端代码或运行服务器端代码的帖子进行更新。

如果您想要使用来自CSJS的内容更新viewScope变量,则需要使用该值更新隐藏输入,将该隐藏输入绑定到viewScope变量并运行部分刷新以发布内容隐藏的服务器输入。如果它在页面的其他位置,只需使用SSJS访问组件/数据源并避免使用CSJS,但不清楚您的用例是什么。