在XPage上获取客户端javascript(CSJS)中的变量范围

时间:2012-03-05 14:42:17

标签: xpages

我在服务器端javascript(SSJS)按钮中设置了一个viewScope变量。

viewScope.put(" BRANCHNAME",doc.getItemValueString(" BRANCHNAME&#34))

如何在客户端访问该变量?

5 个答案:

答案 0 :(得分:14)

如果需要从客户端脚本访问viewScope变量,可以使用xp:scriptBlock标记设置许多全局javascript变量。

<xp:scriptBlock id="scriptBlock1">
<xp:this.value><![CDATA[var myVar = #{javascript:viewScope.get("scopeVar")}]]></xp:this.value>
</xp:scriptBlock>

此方法的主要问题是内部服务器端javascript仅在最初呈现该元素或在元素上执行部分刷新时计算,因此无法保证客户端JS变量设置为正确的价值。

答案 1 :(得分:9)

您无法直接访问viewScope变量,但可以将其绑定到隐藏字段 然后通过csjs访问该值 XSP.getElementById( “#{ID:inputHidden1}”)。值

还有其他方法可以使用rpc或ajax请求等方式访问它。

答案 2 :(得分:6)

使用以下代码:

var value = "#{javascript:viewScope.variablename}"

答案 3 :(得分:5)

我将看一下扩展库中包含的JSON RPC。此组件将允许您定义可能/可能不接受参数的SSJS函数。假设你添加了一个带有myRPC ID的RPC和一个名为getViewScopeVar的方法,它接受一个String参数,并返回viewScope变量的值,并带有你作为参数包含的名称。然后,您可以调用该方法,如:

myRPC.getViewScopeVar("branchName")

这是从客户端javascript与服务器端元素进行交互的最简单最有效的方法。只要您将RPC放在战略自定义控件上(例如每个xpage所基于的布局自定义控件),它就可以让您选择将所有必需的方法放在一个位置。

答案 4 :(得分:0)

如果您需要频繁更新,可以使用扩展库中的Ajax服务。