2016-02-11 64 views
0

美好的一天夥計!JSON-RPC和當前文檔的句柄

我有一個調用(CSJS)到我的XPage中的JSON-RPC服務來獲取viewScope變量的值。我使用這個調用來遍歷我的字段名稱(動態)並驗證它們。

我無法弄清楚如何從RPC服務中獲取這些字段綁定到的數據源(在我的情況下爲document1)的句柄。

這裏的電話:

// Use the JSON-RPC Service to get the number of asset item rows 
// from the viewScope variable 
var deferred = myRPCService.getScopeVar(); 
deferred.addCallback(function(result){ 

alert(result); // <-- viewScope variable value 

// get the dynamic field names for the asset items based on row # 
var itemname = '';  
for (var i = 1; i < result; i++) { 
var itemname = 'replace'+(i < 10? '0':'')+ i 
if (document1.getItemValueString(itemname) == ""){ 
    // do this 
} else{ 
    // do that 
}  
} 
}); 

我確實從RPC調用的viewScope變量的值,但我不能讓不止於此。任何指針/例子將不勝感激。

感謝,

PS:請參閱下面我的意見......

+0

附錄:我想我可以通過將JSON-RPC調用的響應(結果)分配給一個CSJS變量來避開這個問題,然後我可以繼續在回調函數之外進行處理。但是,時間安排並不重要。 //使用JSON-RPC服務獲取viewScope變量值 var deferred = myRPCService.getScopeVar(); var rowCount =「」; deferred.addCallback(function(result){ rowCount = result; alert(「CT1 =」+ rowCount); }); alert(「CT2 =」+ rowCount); 第二次警報CT2在第一次警報之前用一個空值觸發,然後CT1觸發警報。嘆! –

回答

1

你不說什麼調用JSON-RPC事件,所以我會猜測,並說這是一個按鈕。您必須有一個附加的服務器端事件將viewScope變量設置爲值document1.getItemValueString(itemname),然後您可以在RPC中檢索該值。

你SSJS事件代碼看起來類似:

viewScope.result = document1.getItemValueString(itemname); 

額外的事件可以是的onmouseover (不推薦)或onkeypress事件。我假設您使用的是onclick客戶端代碼,您不能使用onclick服務器端,因爲此代碼需要在您的客戶端之前運行。你會希望viewScope包含新的數據,因此這個建議。如果數據不需要新鮮,則在頁面加載時進行設置。


另一個想法是調用兩個RPC。第一個可以設置viewScope變量,第二個可以使用它。第一個不需要回調,只需調用設置viewScope的java或SSJS函數即可。我個人比我的第一個建議更喜歡這個。

+0

Steve,回答你的問題,RPC調用是通過一個按鈕來完成的。並澄清,我'得到'不設置viewScope變量的值。這不是問題。正如你從我的代碼中可以看到的,我有一個警報返回回調函數中的值。但是,我不知道在回調函數中如何處理數據源(document1)。 –

+0

不,您可以在您的作用域變量中獲取數據源字段的值,而不是document1的句柄。你可以打電話給我,如果你想,我的電話#在Facebook上。將在未來30分鐘(中央直到6:30) –