在XPages中从CSJS调用SSJS

在XPages中从CSJS调用SSJS,xpages,xpages-ssjs,Xpages,Xpages Ssjs,我需要从客户端javascript库调用JavaBean方法。有没有办法从csjs库调用ssjs 类似这样的东西在csjs中工作 var test=#{javascript:getConfig.getKeyValuesList(“param”) 您想使用Ext.Library中的远程服务工具。这允许您在SSJS中定义函数并从CSJS调用它 这里有关于它的讨论: 有一个旧的注释9视频应该仍然非常有效: 您可以按照示例中显示的方式来执行,如 var test = #{javascript:your

我需要从客户端javascript库调用JavaBean方法。有没有办法从csjs库调用ssjs

类似这样的东西在csjs中工作
var test=#{javascript:getConfig.getKeyValuesList(“param”)

您想使用Ext.Library中的远程服务工具。这允许您在SSJS中定义函数并从CSJS调用它

这里有关于它的讨论:

有一个旧的注释9视频应该仍然非常有效:

您可以按照示例中显示的方式来执行,如

var test = #{javascript:yourBean.getSomething()};
首先执行SSJS代码,将结果插入CSJS代码并发送到客户端

这取决于您的用例,如果它可以成为您的解决方案

您的示例有点修改

var test = ['#{javascript:getConfig.getKeyValuesList("param").join("', '")}'];
将执行methode getKeyValuesList(),返回字符串列表,.join()将其转换为类似“aaa”、“bbb”、“ccc”的字符串,并将生成的以下代码发送给客户端:

 var test = ['aaa', 'bbb', 'ccc'];

我通过组合CSJS库来实现这一点,在CSJS库中,我使用属性和方法定义对象,然后在自定义控件(通常是带有库资源的控件)上添加一个scriptBlock,用于将数据获取到客户端对象中。正如frank所说,只有在加载页面时才会发生这种情况,但是对于配置数据,比如您似乎正在获取的数据,这种情况可以正常工作

以下是您的库的示例csjs类:

var appConfig = {
   param1 : "",
   param2 : ""
}
这是脚本块代码:

<xp:scriptBlock>
     <xp:this.value><![CDATA[
// setup config parameters
appConfig.param1 = '#{javascript:getConfig.getKeyValuesList("param1")}';
appConfig.param2 = '#{javascript:getConfig.getKeyValuesList("param2")}';
})
]]></xp:this.value>
</xp:scriptBlock>


愉快的编码。

谢谢,我将探讨这个问题:SSJS代码在渲染阶段执行(对于内联CSJS)。要获得“fresh result”,您必须在CSJS库()中调用部分/完全刷新。只需在David的答案中添加另一个选项,您就可以了