2016-02-11 62 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) –