在XPage中从CSJS调用SSJS

时间:2014-11-06 14:15:33

标签: xpages xpages-ssjs

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

这样的东西适用于csjs  var test =#{javascript:getConfig.getKeyValuesList(“param”)};

3 个答案:

答案 0 :(得分:7)

您想在Ext中使用Remote Service工具。图书馆。这允许您在SSJS中定义一个函数并从CSJS调用它。

这里有讨论: http://www.notesin9.com/2014/05/21/tim-explains-json-rpc-codefortim/

旧的NotesIn9视频应该仍然非常有效: http://www.notesin9.com/2011/08/25/notesin9-033-introduction-to-remote-services-in-xpages/

答案 1 :(得分:3)

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

var test = #{javascript:yourBean.getSomething()};

首先执行SSJS代码,将结果插入CSJS代码并发送给客户端。

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

您的修改示例

var test = ['#{javascript:getConfig.getKeyValuesList("param").join("', '")}'];

将执行methode getKeyValuesList(),返回一个字符串List,.join()将其转换为字符串,如“aaa”,“bbb”,“ccc”,并将以下结果代码发送给客户端:

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

答案 2 :(得分:3)

我使用CSJS库的组合来完成此操作,其中我使用属性和方法定义对象,然后在自定义控件(通常是具有库资源的控件)上添加一个scriptBlock,用于将数据导入客户端对象。正如frank所说,只有在加载页面时才会发生这种情况,但对于配置数据来说,就像你看起来那样,它可以正常工作。

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

var appConfig = {
   param1 : "",
   param2 : ""
}

然后这是scriptBlock代码:

<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>

快乐的编码。