2015-10-26 2 views
2

Я следую this tutorial, чтобы получить функцию захвата подписки в приложении Oracle MAF.Oracle MAF: (захват подписи) Вызов функции javascript из управляемого компонента

Когда я попытался с простым POC, как объяснено в учебнике, я сделал это с любыми проблемами. Та же логика, которую я включил в свой проект.


Ниже приведены параметры, которые я сделал для интеграции,

  • я включил js and css файл в maf-feature.xml под Task определения потока (где я имею amx страницу).
  • Я определил объем боба как 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"); 
    }; 

})(); 

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

+1

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

+0

Спасибо, теперь я могу вызвать JavaScript. Но почему «AdfmfJavaUtilities.getActiveContextId()» работает не так, как ожидалось, когда я пытаюсь напечатать значение, которое дает имя файла определения страницы. Например: у меня есть функция подписи в 'signature.amx', а определение моей страницы - 'signaturePageDef.xml', тогда 'AdfmfJavaUtilities.getActiveContextId()' выводит 'signaturePageDef' как вывод. В чем проблема. –

ответ

1

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

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

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

Параметры:

  • FeatureId: идентификатор функции, на которой для вызова метода
  • имяМетода: имя метода
  • args: массив аргументов, передаваемых в метод

Возвращает:

  • объект JSON

Так как вы можете видеть/сказал себе AdfmfJavaUtilities.getActiveContextId() не возвращает FeatureId, но имя активного контекста EL текущего объекта в (click)

+0

Спасибо, что поделились этой ссылкой. :) –

Смежные вопросы