我需要从客户端javascript库调用java bean方法。有没有办法从csjs库调用ssjs?
这样的东西适用于csjs var test =#{javascript:getConfig.getKeyValuesList(“param”)};
答案 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>
快乐的编码。