簡體   English   中英

Oracle MAF:(簽名捕獲)從托管 Bean 調用 javascript 函數

[英]Oracle MAF : (Signature Capture) Calling a javascript function from Managed Bean

我正在按照本教程獲取 Oracle MAF 應用程序中的簽名捕獲功能。

當我按照教程中的說明嘗試使用簡單的 POC 時,我讓它工作沒有任何問題。 我已經集成到我的項目中的相同邏輯。


以下是我為集成所做的設置,

  • 我已將js and css文件包含在任務流定義下的maf-feature.xml (我有amx頁面)。
  • 我在XXXXX-task-flow.xml文件中將 bean 的范圍定義為pageFlow而不是像下面這樣的adfc-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>
  • 當我使用下面的commandButton調用fetchHandlercleaHandler方法時,它正在調用沒有失敗的方法。

從方法來看,下面的語句不會觸發 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");
    };

})();

任何建議將不勝感激。 如果您需要有關此的更多詳細信息,請在下面發表評論。

嘗試使用您的功能 ID(作為字符串)而不是AdfmfJavaUtilities.getActiveContextId() ) 。

從 Oracle 文檔( 單擊):

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

參數:

  • featureId:要調用該方法的功能的 id
  • 方法名稱:方法名稱
  • args:要傳遞給方法的參數數組

返回:

  • 一個 JSON 對象

所以就像你可以看到/說自己AdfmfJavaUtilities.getActiveContextId()不返回功能AdfmfJavaUtilities.getActiveContextId() ,而是當前功能的活動 EL 上下文的名稱( 單擊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM