Oracle MAF: (Signature Capture) Вызов функции javascript из Managed Bean

Я следую этому руководству, чтобы получить функциональность захвата подписи в приложении 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>
    
  • когда я вызываю метод fetchHandler и cleaHandler, используя ниже 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");
    };

})();

Любое предложение будет оценено. Пожалуйста, прокомментируйте ниже, если вам нужна дополнительная информация по этому поводу.


person Wanna Coffee    schedule 26.10.2015    source источник
comment
Вместо AdfmfJavaUtilities.getActiveContextId() попробуйте использовать свой идентификатор функции (в виде строки).   -  person User404    schedule 26.10.2015
comment
Спасибо, теперь я могу вызвать JavaScript. Но почему «AdfmfJavaUtilities.getActiveContextId()» не работает должным образом, когда я пытаюсь напечатать значение, которое дает имя файла определения страницы. Например: у меня есть функция подписи в «signature.amx», а определение моей страницы — «signaturePageDef.xml», тогда «AdfmfJavaUtilities.getActiveContextId()» печатает «signaturePageDef» в качестве вывода. В чем проблема.   -  person Wanna Coffee    schedule 27.10.2015


Ответы (1)


Вместо AdfmfJavaUtilities.getActiveContextId() попробуйте использовать свой идентификатор функции (в виде строки).

Из документации Oracle (клик):

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

Параметры:

  • featureId: идентификатор функции, для которой вызывается метод.
  • имя_метода: имя метода
  • args: массив аргументов для передачи в метод

Возвраты:

  • объект JSON

Итак, как вы сами видите/сказали, AdfmfJavaUtilities.getActiveContextId() возвращает не featureID, а имя активного контекста EL текущей функции (нажмите)

person User404    schedule 27.10.2015
comment
Спасибо, что поделились ссылкой. :) - person Wanna Coffee; 27.10.2015