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

Posted

技术标签:

【中文标题】在 IBM Worklight 中运行 HTTP 适配器时出错【英文标题】:Error while running the HTTP adapter in IBM Worklight 【发布时间】:2015-04-06 12:59:45 【问题描述】:

我创建了一个 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】:

您已将 submitInput 函数放在适配器实现文件 (DemoHTTPAdapter-impl.js) 中,而不是放在 common\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);

【讨论】:

您好,感谢您的回复!我在显示适配器的值时遇到问题。就像,如果我想在我的 HTML 上显示 java 代码中整数的加法。最好的方法是什么? 首先更正您的应用程序中的上述基本缺陷,然后将此问题标记为已回答,因为您的评论与此处提出的问题无关。然后首先搜索堆栈溢出,因为关于如何在应用程序中显示适配器的结果的问题已经被问过很多次了。

以上是关于在 IBM Worklight 中运行 HTTP 适配器时出错的主要内容,如果未能解决你的问题,请参考以下文章

IBM Worklight 6.0 - 访问 Worklight Server 时出错

IBM Worklight 6.0 - 使用 Web 服务的混合应用程序无法在实际设备上运行?

IBM Worklight - 如何判断 Worklight Studio 运行的是 v6.0.0.0 还是 v6.0.0.1?

IBM Worklight 请求超时

IBM Worklight 应用程序无法在 Xcode 中运行

IBM Worklight:AdapterAuthRealmChallengeHandler.submitSuccess() 生成无效的 http 标头