0

RedApp_2.10 Developer Toolkit を使用して Sabre Red App Web サービス アプリケーションを作成しました。アプリケーションは、ツールキットの com.sabre.redapp.example.cf.webapp.services の例に似ています。アプリケーションには、例 com.sabre.redapp.example.editor.basic に示されているように、org.eclipse.jface.preference.IPreferenceStore Java コンテナーに保管されるいくつかの設定が含まれています。その結果、RedApp の Tools->Options->Red Apps Settings->myApp ページで設定を表示および編集できます。

JavaScript を使用して Web ページから設定にアクセスするにはどうすればよいですか? callOSGIService 関数を使用する必要があると思います。ただし、エラーのみが返されます:「サービス org.eclipse.jface.preference.IPreferenceStore を JS から呼び出すことはできません」。

4

2 に答える 2

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) {
                    ...
                }
            }
        });
    }
    ...
}

ここでうまくいきました

于 2014-07-26T10:05:48.967 に答える
0

現時点では、Red App SDK は、JavaScript を介して IPreferenceStore に直接アクセスするための直接的なインターフェイスを提供していません。

これを実現するオプションは、ネイティブ Java クラスを介して IPreferenceStore にアクセスし、これを公開するカスタム Javascript 関数を介して Browser コンポーネントと通信させることです。Red App SDK は、Java Script からの高度なブラウザー通信に関連する例を提供します。

于 2014-06-03T01:39:48.707 に答える