向适配器传递参数时出现问题

Issues while passing parameters to Adaptor

本文关键字:问题 参数 适配器      更新时间:2023-09-26

我有一个登录表单,它接受用户名和密码。当用户点击提交按钮时,下面的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:参数:[project GDMSLoginApp] TypeError: Cannot find default value for对象。3 (C % % 5 cnewworkspaceworklight % 5 cgdmsloginapp % 5 cadapters % 5 cgdmsdbadaptor/GDMSDbAdaptor-impl.js # 22)FWLSE0101E:由[项目]引起GDMSLoginApp nullorg.mozilla.javascript。EcmaError: TypeError: Cannot查找对象的默认值。3 (C % % 5 cnewworkspaceworklight % 5 cgdmsloginapp % 5 cadapters % 5 cgdmsdbadaptor/GDMSDbAdaptor-impl.js # 22)

但是如果我像下面这样硬编码参数(email 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");
}

与单引号有关吗?

我的第一个猜测是,这是发生的,因为你使用括号:

var para=[$('#usernameInputField').val()];

当你不应该:

var para=$('#usernameInputField').val();

你也可以这样做:

var id = {username : $('#usernameInputField').val() };