Oracle MAF:(签名捕获)从托管 Bean 调用 javascript 函数
Oracle MAF : (Signature Capture) Calling a javascript function from Managed Bean
我正在关注 this tutorial 以获得 Oracle MAF 应用程序中的签名捕获功能。
当我按照教程中的说明尝试使用简单的 POC 时,我成功地解决了任何问题。我已将相同的逻辑集成到我的项目中。
以下是我为集成所做的设置,
- 我已将
js and css
文件包含到任务下的 maf-feature.xml
中
流定义(我有 amx
页面)。
我已经将 bean 的作用域定义为 pageFlow
inside
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");
};
})();
如有任何建议,我们将不胜感激。如果您需要有关此的更多详细信息,请在下方评论。
而不是 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)
我正在关注 this tutorial 以获得 Oracle MAF 应用程序中的签名捕获功能。
当我按照教程中的说明尝试使用简单的 POC 时,我成功地解决了任何问题。我已将相同的逻辑集成到我的项目中。
以下是我为集成所做的设置,
- 我已将
js and css
文件包含到任务下的maf-feature.xml
中 流定义(我有amx
页面)。 我已经将 bean 的作用域定义为
pageFlow
insideXXXXX-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");
};
})();
如有任何建议,我们将不胜感激。如果您需要有关此的更多详细信息,请在下方评论。
而不是 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)