Oracle MAF :(签名捕获)从Managed Bean调用javascript函数

时间:2015-10-26 13:55:53

标签: javascript java oracle-maf

我跟随this tutorial在Oracle MAF应用程序中获取签名捕获功能。

当我尝试使用简单的POC时,如教程中所解释的那样,我可以解决任何问题。我已经将相同的逻辑集成到我的项目中。

以下是我为集成所做的设置,

  • 我已将js and css文件包含在任务下的maf-feature.xml中 流定义(我有amx页面)。
  • 我已将bean的范围定义为pageFlow XXXXX-task-flow.xml个文件而不是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>
    
  • 当我使用下面的方法调用fetchHandlercleaHandler方法时 commandButton,它调用方法没有失败。

从方法来看,下面的语句不会触发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");
    };

})();

任何建议都将不胜感激。如果您需要更多详细信息,请在下方发表评论。

1 个答案:

答案 0 :(得分:1)

而不是AdfmfJavaUtilities.getActiveContextId(),请尝试使用您的功能ID(作为字符串)。

来自Oracle文档(click):

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

<强>参数:

  • featureId:要调用方法的功能的ID
  • methodName:方法名称
  • args:要传递给的参数数组 方法

<强>返回:

  • 一个JSON对象

所以你可以看到/说你自己AdfmfJavaUtilities.getActiveContextId()没有返回featureID但是当前要素的活动EL上下文的名称(click