在XPages上访问客户端javascript(CSJS)中的作用域变量

在XPages上访问客户端javascript(CSJS)中的作用域变量,xpages,Xpages,我正在服务器端javascript(SSJS)按钮中设置viewScope变量 viewScope.put(“branchName”,doc.getItemValueString(“branchName”)) 如何在客户端访问该变量?您不能直接访问viewScope变量,但可以将其绑定到隐藏字段 然后通过csjs访问该值 XSP.getElementById(“#{id:inpAuthidDen1}”).value 还有其他方法可以访问它,比如使用rpc或ajax请求。如果需要从客户端脚本访问v

我正在服务器端javascript(SSJS)按钮中设置viewScope变量

viewScope.put(“branchName”,doc.getItemValueString(“branchName”))


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

您不能直接访问viewScope变量,但可以将其绑定到隐藏字段 然后通过csjs访问该值 XSP.getElementById(“#{id:inpAuthidDen1}”).value


还有其他方法可以访问它,比如使用rpc或ajax请求。

如果需要从客户端脚本访问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变量设置为正确的值。

如果需要频繁更新,可以从扩展库。

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

myRPC.getViewScopeVar("branchName")
这是从客户端javascript与服务器端元素交互的最简单、最有效的方法。另外,只要将RPC放在策略自定义控件上(例如,像每个xpage都基于的布局自定义控件),它就可以选择将所有必需的方法放在一个位置。

使用以下代码:

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

通过隐藏,它将位于CSS端,而不是XPage端。否则它将不会呈现给客户端。它通过html中的隐藏类型的输入标记将其隐藏,因此它的呈现方式是这样的。