2014-11-06 44 views
2

我需要從客戶端JavaScript庫調用java bean方法。有沒有辦法從csjs庫調用ssjs?從XPages中的CSJS調用SSJS

這樣的工作在csjs var test =#{javascript:getConfig.getKeyValuesList(「param」)};

+0

只需向David的答案中添加另一個選項,您可以[創建自己的事件處理程序並通過客戶端JavaScript執行該操作](http://stackoverflow.com/a/19580811/1047998)。 – Naveen 2014-11-07 10:18:12

+0

[如何從計算的HTML鏈接調用SSJS函數?](http://stackoverflow.com/questions/19576077/how-to-call-ssjs-function-from-computed-html-link) – Naveen 2014-11-07 10:20:36

回答

3

你可以做到這一點,你在你的例子表明像

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

SSJS代碼首先被執行,結果被插入CSJS代碼併發送到客戶端。

這取決於您的使用情況,如果這可以成爲您的解決方案。

你有點變形例

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

將執行梅索德getKeyValuesList()返回一個字符串列表,。加入()將其轉換爲像「AAA‘‘BBB字符串’,’ CCC」和發送產生的代碼給客戶端的情況如下:

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

問題:SSJS代碼在渲染階段執行(對於內聯CSJS)。要獲得「新鮮結果」,您必須在CSJS庫(http://xpageswiki.com/web/youatnotes/wiki-xpages.nsf/dx/Work_with_events_and_partial_or_full_refresh)中調用部分/全部刷新。 – 2014-11-06 15:46:38

3

我做到這一點與在予定義與屬性和方法,然後在自定義控制(通常是一個具有用於所述資源對象CSJS庫的組合庫)我添加一個scriptBlock來獲取數據到我的客戶端ob jects。坦率地說,這隻會在頁面加載時發生,但是對於配置數據,比如你似乎正在獲得的配置數據很好。

這裏是你的庫樣本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> 

編碼愉快。