在IBM Worklight中运行HTTP适配器时出错

时间:2015-04-06 12:59:45

标签: ibm-mobilefirst worklight-adapters

我创建了一个HTTP适配器来调用一个过程来添加2个数字。它是一个发送输入和显示输出的基本程序。以下是我的代码。

HTML:

First Integer: <input type="text" id="firstint"/>
Second Integer: <input type="text" id="secondint"/>
<input type="button" onclick="submitInput()" value="Submit"/>

DemoHTTPAdapter-impl.js:

    function submitInput() {
        var invocationData = {
            adapter : 'DemoHTTPAdapter',
            procedure : "getDemoAdd",
            parameters : [$('#firstint').val(),$('#secondint').val()]
        };

        var options = {
            onSuccess : success,
            onFailure : failure
        };

        WL.Client.invokeProcedure(invocationData, options);
    }

function getDemoAdd(firstint, lastint) {
    return {
        result : com.ibm.demo.DemoAdd.addTwoInteger(firstint,secondint)
    }
}

通过以下DemoAdd.java中的java代码调用该过程:

package com.ibm.demo;
import java.util.logging.Logger;

public class DemoAdd {  
    private static final Logger logger = Logger.getLogger(DemoAdd.class.getName());

public static int addTwoInteger(int afirstInt, int aSecondInt) {        
    logger.info("Add Method Invoked with Parameter " + afirstInt + " & " + aSecondInt);
    return (afirstInt + aSecondInt);
}

运行html时出错。

  

submitInput()未定义。

虽然我已经定义了submitInput()方法。

1 个答案:

答案 0 :(得分:0)

您已将submitInput函数放在适配器实现文件(DemoHTTPAdapter-impl.js)中,而不是放在普通的\ js \ main.js文件中。

您需要区分驻留在Worklight Server上的适配器作用域,因此您无法直接将其调用到驻留在应用程序本身中的应用程序作用域。

因为它们具有不同的范围,解析器会尝试查找submitInput,但无法找到它。

应用程序的JavaScript需要调用Worklight框架才能将请求发送到服务器以调用适配器。

将以下代码移至main.js:

function submitInput() {
    var invocationData = {
        adapter : 'DemoHTTPAdapter',
        procedure : "getDemoAdd",
        parameters : [$('#firstint').val(),$('#secondint').val()]
    };

    var options = {
        onSuccess : success,
        onFailure : failure
    };

    WL.Client.invokeProcedure(invocationData, options);
}