2013-04-08 59 views
1

我在worklight中使用基於java的適配器。我有一個方法返回一個字符串值。我能夠調用該函數,並且結果將轉到適配器中的成功處理程序,但我無法找到任何有關返回值的信息。我無法在響應JSON中的任何地方看到返回的字符串。誰能幫我這個?基於Java的適配器 - 找不到返回值

這裏是我的迴應JSON:

{ 「地位」:200, 「invocationContext」:空, 「invocationResult」:{ 「responseID」: 「16」, 「isSuccessful」:真正}}

我看到下面的例子 http://public.dhe.ibm.com/ibmdl/export/pub/software/mobile-solutions/worklight/docs/Module_05_5_-_Using_Java_in_Adapters.pdf,當我做一個上的代碼樣品「調用適配器程序」,我得到這個結果。

{ 「isSuccessful」:真, 「結果」:-9} 其中結果是在適配器中的Java方法的返回值。

但是,當我爲我的應用程序做同樣的事情,我得到以下

{ 「isSuccessful」:真正}

Java的adapter.impl代碼

function getXML(){return {result: com.worklight.javaCode.FileIOPlugin.getXM L()}; }

Java類方法

公共類FileIOPlugin { 公共靜態字符串的getXML(){ 返回 「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");} 
+0

你能後的適配器代碼? – jnortey 2013-04-08 14:02:30

+0

嗯,看起來不錯。如何調用適配器的客戶端代碼? – jnortey 2013-04-08 14:20:18

+0

這可能是無關緊要的,也可能是您複製代碼時發生的,但成功處理程序有一個錯字:「function sucessHandler」,因爲它缺少'c'。我到目前爲止一直無法重現您的錯誤... – jnortey 2013-04-08 14:39:49

回答

0

我試圖在最近發佈的Worklight 6.0中重現您的問題,並且我看到所有工作正常,在您的代碼粘貼&之後複製。

我做的唯一更改是在用於調用適配器方法的invocationData對象上添加空參數。

這是我的確切的代碼:
FileIOPlugin.java(下服務器/ CONF,在封裝com.worklight.javacode)

package com.worklight.javacode; 

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

JavaAdapter的。XML(HTTP接口定義,適配器文件夾下)

<?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(under apps/javaAda pterApp /普通/ 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(在應用程序/ javaAdapterApp /通用)

<!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的結果。字符串化(數據)在成功處理程序是這樣的:

{ 「地位」:200, 「invocationContext」:空, 「invocationResult」:{ 「responseID」: 「9」, 「結果」: 「成功」 「isSuccessful」:真正}}

有您正在尋找在invocationResult.result「成功」的字符串。

希望這有助於
奧蘭多

1

返回需要是一個對象。

+0

嗨..我曾嘗試發送對象也。但我仍然無法看到我能找到返回的對象。 – 2013-04-08 13:29:20