我使用RedApp_2.10 Developer Toolkit创建了Sabre Red App Web服务应用程序。 该应用程序类似于工具包中的com.sabre.redapp.example.cf.webapp.services示例。该应用程序包含几个存储在org.eclipse.jface.preference.IPreferenceStore Java容器中的设置,如示例com.sabre.redapp.example.editor.basic中所示。因此,我可以在工具 - >选项 - >红色应用设置 - > RedApp的myApp页面中查看和编辑设置。
如何使用JavaScript从我的网页访问设置?猜猜我需要使用callOSGIService函数。但它只返回错误: “无法从JS调用服务org.eclipse.jface.preference.IPreferenceStore。”
答案 0 :(得分:1)
我同意朱利安的意见。
只需创建自己的浏览器即可扩展默认浏览器 并扩展它声明一个JavaScript回调函数:
public class MbBrowserEditor extends DefaultBrowserEditor {
...
public void createPartControl(Composite parent) {
super.createPartControl(parent);
this.registerJavaScriptCallback(new MbJavascriptCallback(this), "callSWS");
}
...
}
registererd JavaScriptCallback可能是这样的:
public class MbJavascriptCallback extends JavaScriptCallback {
MbBrowserEditor browserView = null;
// javascript callback function name
String sbMergeBack = "callBackFromPnrMb";
// parameters for the javascript callback function
String sSuccess = "true";
String sMessage = "PNR Merge Back executed successfully";
String sErrorDetail = "No error";
...
/**
* this function will be called by JS to execute a SWS workflow
* it expects the following parameters :
* items : an array of strings
* transactions : an array of strings
* cbMergeBack : a string
*/
@Override
public void function(Object[] arguments) {
// do your stuff
callBackWebApp();
}
private void callBackWebApp() {
...
// callback javascript (with 3 params - set your own)
final String cbFunction = sbMergeBack+"(\"" + sSuccess + "\", \"" + sMessage + "\", \"" + sErrorDetail + "\");";
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
...
try {
browserView.executeJavaScript(cbFunction);
} catch (Exception ex) {
...
}
}
});
}
...
}
工作得很好here
答案 1 :(得分:0)
目前Red App SDK没有直接通过JavaScript提供直接访问IPreferenceStore的界面。
实现此目的的一个选项是通过本机Java类访问IPreferenceStore,并通过自定义Javascript函数与浏览器组件进行通信。 Red App SDK提供了与Java Script高级浏览器通信相关的示例。