【问题标题】:Call SSJS from CSJS in XPages在 XPages 中从 CSJS 调用 SSJS
【发布时间】:2014-11-06 14:15:33
【问题描述】:

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

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

【问题讨论】:

标签: xpages xpages-ssjs


【解决方案1】:

您想在分机中使用远程服务工具。图书馆。这使您可以在 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/

【讨论】:

  • 谢谢我会探索这个
【解决方案2】:

您可以按照您在示例中展示的方式进行操作,例如

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

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

这取决于您的用例是否适合您。

你稍微修改的例子

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

会执行 getKeyValuesList() 方法,返回一个字符串列表,.join() 会将其转换为类似“aaa”、“bbb”、“ccc”的字符串,并将以下结果代码发送给客户端:

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

【讨论】:

【解决方案3】:

我使用 CSJS 库的组合来执行此操作,在其中我定义具有属性和方法的对象,然后在自定义控件(通常是具有库资源的控件)上添加一个 scriptBlock 用于将数据获取到我的客户端对象.正如弗兰克所说,这只发生在页面加载时,但对于配置数据,比如你似乎得到的,效果很好。

这是您的库的示例 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>

编码愉快。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-23
    • 1970-01-01
    相关资源
    最近更新 更多