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

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

我正在关注 this tutorial 以获得 Oracle MAF 应用程序中的签名捕获功能。

当我按照教程中的说明尝试使用简单的 POC 时,我成功地解决了任何问题。我已将相同的逻辑集成到我的项目中。


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

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

})();

如有任何建议,我们将不胜感激。如果您需要有关此的更多详细信息,请在下方评论。

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

来自 Oracle 文档 (click):

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

参数:

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

Returns:

  • 一个JSON对象

所以你可以 see/said 你自己 AdfmfJavaUtilities.getActiveContextId() 不是 return featureID 而是当前功能的活动 EL 上下文的名称 (click)