将参数传递给适配器时出现问题
Posted
技术标签:
【中文标题】将参数传递给适配器时出现问题【英文标题】:Issues while passing parameters to Adaptor 【发布时间】:2014-08-17 09:38:06 【问题描述】:我有一个登录表单,它需要用户名和密码。当用户点击提交按钮时, 调用以下 js 函数。
function getGeoCode()
var para=[$('#usernameInputField').val()];
alert("from sql adapter"+para);
var id = username : para ;
var invocationData =
adapter: "GDMSDbAdaptor",
procedure: "getGeoCode",
parameters: [id]
;
alert("before adapter proc call");
WL.Client.invokeProcedure(invocationData,
onSuccess: getMessage,
onFailure: getMessageOnfailure
);
alert("after adapter proc call");
下面的适配器代码在上面的函数之后执行
var procedureStatement = WL.Server.createSQLStatement("SELECT DISP_NUMBER,DISP_STATUS,DISP_CREATE_DATE,CUST_CONT_NAME,DISP_RES_OWNER,DISP_MANAGER FROM GDMW.DISPUTE WHERE DISP_RES_OWNER IN (SELECT USER_CNUM FROM GDMW.USER_ACC_PROFILE WHERE USER_EMAIL=?)");
function getGeoCode(data)
var email=data.username;
WL.Logger.info("In getGeoCode method"+email);
return WL.Server.invokeSQLStatement(
preparedStatement : procedureStatement,
parameters : [email]
);
运行上述代码时出现以下错误
[ERROR ] FWLSE0099E: 调用过程时发生错误 [项目GDMSLoginApp]GDMSDbAdaptor/getGeoCodeFWLSE0100E:参数: [项目 GDMSLoginApp] TypeError:找不到默认值 目的。 (C%3A%5Cnewworkspaceworklight%5CGDMSLoginApp%5Cadapters%5CGDMSDbAdaptor/GDMSDbAdaptor-impl.js#22) FWLSE0101E: 由:[项目 GDMSLoginApp]nullorg.mozilla.javascript.EcmaError: TypeError: 不能 找到对象的默认值。 (C%3A%5Cnewworkspaceworklight%5CGDMSLoginApp%5Cadapters%5CGDMSDbAdaptor/GDMSDbAdaptor-impl.js#22)
但如果我硬编码下面的参数(电子邮件 ID),它可以正常工作:
function getGeoCode()
var para=[$('#usernameInputField').val()];
alert("from sql adapter"+para);
var id = username : 'some@email.address' ;
var invocationData =
adapter: "GDMSDbAdaptor",
procedure: "getGeoCode",
parameters: [id]
;
alert("before adapter proc call");
WL.Client.invokeProcedure(invocationData,
onSuccess: getMessage,
onFailure: getMessageOnfailure
);
alert("after adapter proc call");
与单引号有关吗?
【问题讨论】:
【参考方案1】:我的第一个猜测是它正在发生,因为您使用了括号:
var para=[$('#usernameInputField').val()];
当你不应该这样做时:
var para=$('#usernameInputField').val();
你也可以这样做:
var id = username : $('#usernameInputField').val() ;
【讨论】:
以上是关于将参数传递给适配器时出现问题的主要内容,如果未能解决你的问题,请参考以下文章
从 rexx 代码向 ispf 宏传递参数时出现无效长度错误
MobileFirst:如何使用 angularJS 将参数传递给适配器