2

このチュートリアルに従って、Oracle MAF アプリケーションで署名キャプチャ機能を取得しています。

チュートリアルで説明されているように単純な POC で試したところ、問題なく動作しました。プロジェクトに統合したのと同じロジック。


以下は、統合のために行った設定です。

  • タスク フロー定義 (ページがある場所) の下にjs and cssファイルを含めました。maf-feature.xmlamx
  • 以下のようにではなく、ファイルpageFlow内 としてBeanのスコープを定義しました。XXXXX-task-flow.xmladfc-mobile-config.xml

    <managed-bean id="__20">
      <managed-bean-name>signatureCapture</managed-bean-name>
      <managed-bean-class>package.SignatureCapture</managed-bean-class>
      <managed-bean-scope>pageFlow</managed-bean-scope>
    </managed-bean>
    
  • 以下を使用し fetchHandlerてメソッドを呼び出している場合、Failなしでメソッドを呼び出しています。cleaHandlercommandButton

メソッドから、以下のステートメントは JavaScript をトリガーしません

fetchHandler メソッド内:

AdfmfContainerUtilities.invokeContainerJavaScriptFunction(AdfmfJavaUtilities.getActiveContextId(), "doFetch",
                                                              new Object[] { });

clearHandler メソッド内:

AdfmfContainerUtilities.invokeContainerJavaScriptFunction(AdfmfJavaUtilities.getActiveContextId(), "doClear",
                                                              new Object[] { });

以下は、参照用の JavaScript ( MyFile.js) です。

(function () {

    // This method clears the signature area
    doClear = function () {
    alert("Clear function called.!");
        var sigElement = document.getElementById("sig");
        if (sigElement == null)
            alert("sigElement not found");
        var sig = $(sigElement);
        sig.signature('clear');
        adf.mf.api.invokeMethod("package.SignatureCapture", "FetchCallback", "", onInvokeSuccess, onFail);
    };

    // This method gets the signature as a JSON string.  As an example, it does an alert of the string and then sends it to a Java handler for further processing
    doFetch = function () {
    alert("Fetch function called.!");
        var sigElement = document.getElementById("sig");
        if (sigElement == null)
            alert("sigElement not found");
        var sig = $(sigElement);
        var fetchData = sig.signature('toJSON');
        adf.mf.api.invokeMethod("package.SignatureCapture", "FetchCallback", fetchData, onInvokeSuccess, onFail);
    };

    function onInvokeSuccess(param) {
    alert("onInvokeSuccess");
    };

    function onFail() {
        alert("It failed");
    };

})();

任意の提案をいただければ幸いです。これに関する詳細が必要な場合は、以下にコメントしてください。

4

1 に答える 1

1

の代わりにAdfmfJavaUtilities.getActiveContextId()、機能 ID を (文字列として) 使用してみてください。

Oracle のドキュメントから (クリック):

public static Object invokeContainerJavaScriptFunction(String featureId,
                                                       String methodName,
                                                       Object[] args)

パラメーター:

  • featureId: メソッドを呼び出す機能の ID
  • methodName: メソッド名
  • args: メソッドに渡される引数の配列

戻り値:

  • JSON オブジェクト

あなたが見ることができるように、自分自身AdfmfJavaUtilities.getActiveContextId()がfeatureIDを返すのではなく、現在の機能のアクティブなELコンテキストの名前を返します(クリック

于 2015-10-27T05:53:47.257 に答える