当前位置: 首页 > 知识库问答 >
问题:

基于Java的适配器-找不到返回值

闻人哲茂
2023-03-14

我正在Worklight中使用一个基于Java的适配器。我有一个返回字符串值的方法。我可以调用该函数,结果将被送到适配器中的成功处理程序,但我无法找到关于返回值的任何信息。我在响应JSON中的任何地方都看不到返回的字符串。有谁能帮我一下吗?

下面是我的响应JSON:

{“Status”:200,“InvocationContext”:Null,“InvocationResult”:{“ResponseID”:“16”,“IssubcessFul”:True}}

我已经看到了下面的示例http://public.dhe.ibm.com/ibmdl/export/pub/software/mobile-solutions/worklight/docs/module_05_5__using_java_in_adapters.pdf,当我对代码示例执行“调用适配器过程”时,我得到了这个结果。

{“issulcessful”:true,“result”:-9}其中result是适配器中Java方法的返回值。

但当我对我的应用程序做同样的事情时,我会得到以下结果

{“issulcessful”:true}

Java-Adapter.Impl代码

函数getXML(){return{result:com.worklight.javacode.fileioplugin.getXML()};}

Java类法

公共类FileIOPlugin{public static String getXML(){return“success”;}}

function getXML()
{
var invocationData ={
adapter: 'JavaAdapter',
procedure: 'getXML'
};

WL.Client.invokeProcedure(invocationData,{
onSuccess: successHandler,
onFailure: failureHandler
)};

 function successHandler(data) {alert(JSON.stringify(data));}
 function failureHandler(data) {alert("Error to get data");}

共有2个答案

柴俊捷
2023-03-14

返回必须是一个对象。

纪畅
2023-03-14

我试图在最近发布的Worklight6.0中重现您的问题,在复制和粘贴您的代码之后,我看到一切都运行良好。

我所做的唯一更改是在用于调用适配器方法的invocationData对象上添加了空参数。

这是我的确切代码:
fileioplugin.java(在server/conf下,在com.worklight.javacode包中)

package com.worklight.javacode;

public class FileIOPlugin {
    public static String getXML() {
        return "SUCCESS";
    }
}

xml(HTTP适配器定义,位于adapters文件夹下)

<?xml version="1.0" encoding="UTF-8"?>
<wl:adapter name="JavaAdapter"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:wl="http://www.worklight.com/integration"
    xmlns:http="http://www.worklight.com/integration/http">

    <displayName>JavaAdapter</displayName>
    <description>JavaAdapter</description>
    <connectivity>
        <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
            <protocol>http</protocol>
            <domain>rss.cnn.com</domain>
            <port>80</port> 
            <!-- Following properties used by adapter's key manager for choosing specific certificate from key store  
            <sslCertificateAlias></sslCertificateAlias> 
            <sslCertificatePassword></sslCertificatePassword>
            -->     
        </connectionPolicy>
        <loadConstraints maxConcurrentConnectionsPerNode="2" />
    </connectivity>

    <procedure name="getXML"/>  
</wl:adapter>

javaAdapter-impl.js(在javaAdapter.xml旁边)

function getXML() {
    return {
        result : com.worklight.javacode.FileIOPlugin.getXML()
    };
}

我将我的应用程序命名为javaAdapterApp,因此有这些文件名:

javaAdapterApp.js(在apps/javaAdapterApp/common/js下)

function wlCommonInit(){
}

function getXML() {
    var invocationData = {
        adapter : 'JavaAdapter',
        procedure : 'getXML',
        parameters : []
    };

    WL.Client.invokeProcedure(invocationData, {
        onSuccess : successHandler,
        onFailure : failureHandler
    });
}

function successHandler(data) {
    alert(JSON.stringify(data));
}
function failureHandler(data) {
    alert("Error to get data");
}

最后是javaadapterapp.html(在apps/javaadapterapp/common下)

<!DOCTYPE HTML>
<html>
        <head>
            <meta charset="UTF-8">
            <title>javaAdapterApp</title>
            <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
            <link rel="shortcut icon" href="images/favicon.png">
            <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
            <link rel="stylesheet" href="css/javaAdapterApp.css">
            <script>window.$ = window.jQuery = WLJQ;</script>
        </head>
        <body id="content" style="display: none;">
            <button onClick="getXML()">GET XML</button>

            <script src="js/initOptions.js"></script>
            <script src="js/javaAdapterApp.js"></script>
            <script src="js/messages.js"></script>
        </body>
</html>

我在测试服务器中运行它,成功处理程序中的json.stringify(数据)的结果看起来是:

{“Status”:200,“InvocationContext”:Null,“InvocationResult”:{“ResponseID”:“9”,“Result”:“Success”,“IssubcessFul”:True}}

在invocationresult.result中有您要查找的“success”字符串。

希望这对奥兰多有帮助

 类似资料:
  • 我正在尝试使用一个以我的类单元格为键的HashMap。但是,在将项放入HashMap之后,对该项调用contains将返回false。 这会打印出false和true,在这里应该打印true和true,因为根据映射,docs containsKey使用.equals()。我做错了什么?

  • WebFlux、反应式和处理程序的新增功能。我已经让事情“正常”了,但我不明白为什么下面的代码返回“OK”,返回的是空的正文,反之则是“not found”。 澄清:关注的问题在DemoPOJOHandler.getById()的最终返回语句中。“短路”代码按预期工作(即返回“坏请求”状态),但是如果DemoPOJORepo.getById(int)返回Mono.empty(),最终返回语句的“开

  • 3.12 基于Java的容器配置 {#toc_5} 3.12.1 基本概念:@Bean 和 @Configuration {#toc_6} 最核心的是Spring支持全新的Java配置,例如@Configuration注解的类和@Bean注解的方法。 @Bean注解用来说明通过Spring IoC容器来管理时一个新对象的实例化,配置和初始化的方法。这对于熟悉Spring以XML配置的方式,@Bea

  • 我对java“I get this error”不熟悉,找不到适合getText(String)方法JTextComponent的方法。getText(int,int)不适用(实际参数列表和形式参数列表长度不同)方法JTextComponent。getText()不适用 (Alt Enter显示提示)“当我试图运行我的程序时。请帮助。我做错了什么?

  • 我想允许用户上传两个图像,封面和徽标。然后将它们保存在fi恢复中。我在行中出错 找不到适用于into(Uri)方法RequestCreator的方法。into(目标)不适用(参数不匹配;Uri无法转换为目标)方法RequestCreator。into(ImageView)不适用(参数不匹配;Uri无法转换为ImageView)

  • 问题内容: 我试图通过传递一些参数的AJAX调用MVC控制器动作。 我有时 在此应用程序中执行此操作 ,并且效果很好。 我不知道为什么只有 这一个 无效。 这是我的控制器方法: 提醒一下,我正在做我在其他Ajax调用中所做的事情,但是特别是 只有这一条 不起作用。 有人有什么主意吗? 问题答案: 始终使用或html helper方法来构建操作方法的url。无论您当前的页面/路径如何,它都会正确构建