调用 Worklight 适配器并将列表视图中的 JSON 数据显示为字符串

Invoking Worklight Adapter and Displaying that JSON data in list view as strings

本文关键字:JSON 数据 显示 字符串 视图 适配器 Worklight 列表 调用      更新时间:2023-09-26

这是我的adapter.impl.js代码。

 //This procedure implementation is to get all the details from the table which in database.
 var procedure1Statement = WL.Server.createSQLStatement("select * from employee");
 function procedure1() {
return WL.Server.invokeSQLStatement({
    preparedStatement : procedure1Statement,
    parameters : []
});
}

这是我在工作光中从 SQL 适配器检索的 JSON 数据。

{
"isSuccessful": true,
"resultSet": [
  {
     "EMAIL": "bkandregula@gmail.com",
     "ID": 1,
     "NAME": "Bhanu Kandregula"
  },
  {
     "EMAIL": "rbkandregula@gmail.com",
     "ID": 2,
     "NAME": "Raghu Kandregula"
  },
  {
     "EMAIL": "shyamsurisetty@gmail.com",
     "ID": 3,
     "NAME": "Shyam Surisetty"
  },
  {
     "EMAIL": "bunny@gmail.com",
     "ID": 4,
     "NAME": "Bunny"
  },
  {
     "EMAIL": "divya@gmail.com",
     "ID": 5,
     "NAME": "Divya Sri"
  },
  {
     "EMAIL": "chandhu@gmail.com",
     "ID": 6,
     "NAME": "Chandana"
  }
]
}

不是我要从客户端调用此适配器并在移动控制台上的列表视图中显示此数据。为此,这是我在客户端js文件中使用的代码。

function wlCommonInit(){
LoadSQLRecords();}
function loadSQLRecords(){
var invocationData = {
    adapter : 'MySQLadap',
    procedure : 'procedure1',
    parameters : []
};
WL.Client.invokeProcedure(invocationData,{
    onSuccess : loadSQLQuerySuccess,
    onFailure : loadSQLQueryFailure
});
}
function loadSQLQuerySuccess(result) {
    WL.Logger.debug("Retrieve success" +  JSON.stringify(result));
    displayFeeds(result.invocationResult.resultSet);
}
function loadSQLQueryFailure(result) {
    WL.Logger.error("Retrieve failure");
}
function displayFeeds(items) {
    var ul = $('#itemsList');
    for (var i = 0; i < items.length; i++) {
        var li = $('<li/>').html(items[i].id);
        li.append($('<li/>').html(items[i].name));
        li.append($('<li/>').html(items[i].email));
        li.append($('<hr>'));
        ul.append(li);
    }
  }

这是我的HTML文件代码,可以在屏幕上显示我的数据。

<div id="wrapper">
        <ul id="itemsList"></ul>
 </div>

但这对我不起作用。我一直在搜索许多博客和网站,但我无法触发它。请帮助我调用适配器并在移动控制台的列表视图中显示该数据。谢谢。

您需要更正以下内容,然后重新部署应用程序。

  1. 函数名称拼写错误:

    LoadSQLRecords应该是loadSQLRecords.

    function wlCommonInit(){
        LoadSQLRecords(); // Upper-case 'L'; should be lower-case.
    }
    function loadSQLRecords(){
        var invocationData = {
            adapter : 'MySQLadap',
            procedure : 'procedure1',
            parameters : []
        };
    };
    

    在修复之前,您应该已经在Chrome DevTools的控制台中看到以下内容:

    worklight.js:5147 Uncaught Exception: Uncaught ReferenceError: LoadSQLRecords is not defined at (compiled_code):4
    main.js:4 Uncaught ReferenceError: LoadSQLRecords is not defined
    
  2. 您需要更改以下内容才能实际显示任何值。

    • 使用items.invocationResult.resultSet
    • 对属性

      使用正确的大小写

    从:

    for (var i = 0; i < items.length; i++) {
        var li = $('<li/>').html(items[i].id);
        li.append($('<li/>').html(items[i].name));
        li.append($('<li/>').html(items[i].email));
        li.append($('<hr>'));
        ul.append(li);
    }
    

    自:

    for (var i = 0; i < items.invocationResult.resultSet.length; i++) {
        var li = $('<li/>').html(items.invocationResult.resultSet[i].ID);
        li.append($('<li/>').html(items.invocationResult.resultSet[i].NAME));
        li.append($('<li/>').html(items.invocationResult.resultSet[i].EMAIL));
        li.append($('<hr>'));
        ul.append(li);
    }