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

Pra*_*kar 2 xpages

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

  var val = 'TEST_VALUE';
  "#{javascript: viewScope.testVal = " + val + "}" 
Run Code Online (Sandbox Code Playgroud)

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

print("ViewScope val " + viewScope.testVal); 
Run Code Online (Sandbox Code Playgroud)

变量名存储在变量名而不是变量值中ViewScope.

Pau*_*ers 5

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

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

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

  • 这是JSON-RPC组件设计用于的一种用例:让浏览器告诉服务器执行某些操作,而无需发布整个表单并触发部分/完全刷新的所有开销. (2认同)