2016-08-24 7 views
0

私は自分のmobilefirst Javaアダプタに渡そうとしているjavascriptの配列を持っています。私は、これは私がちょうど400エラーを取得し送信するとき MobileFirst POST Java配列からJava配列へ

myArr = [1,2,3]; 
var sendPost = new WLResourceRequest(
       "/adapters/MyAdpater/path", 
       WLResourceRequest.POST 
     ); 
var formParam = {"arr":myArr}; 
sendTicketPost.sendFormParameters(formParams); 

はその後、私のアダプタで、私は私の方法を持っているとのparam現在

public JSONObject postAdapterFx(@FormParam("arr") List<Integer> myArray) {} 

を得ることができ、そのように私のアダプタを呼び出し、それがあるためでありますアダプタはその型としてのフォームのparamのようなものではないので、アダプタでmyArrayを他に設定することはできますか?私はそれを文字列として送信し、その文字列をJavaのList<Integer>に変換することができますが、それは本当に面倒です。私はそれを避けたいと思います。

どうすればこの配列を渡すことができますか?あなたはrequest.send(yourArray)と一体的にそれを行うことができますヘルプ

答えて

0

ため

感謝。次に、Javaでバッファーを読み取ることができます。ナレッジセンター

var request = WLResourceRequest(url, method, timeout); 
request.send(json).then(
    function(response) { 
    // success flow 
    }, 
    function(error) { 
    // fail flow 
    } 
); 
0

から

例は、あなたはアダプタにフォームデータを送信する前に余分なステップを取る必要があります。 sendFormParametersは単純な値を持つオブジェクト、つまりstring、integer、およびbooleanを受け入れます。あなたの場合arrは配列です。フォームデータをエンコードするユーティリティ関数を作成し、次を使用することができます

function encodeFormData(data) { 
    var encoded = ''; 

    for(var key in data) { 
    var value = data[key]; 

    if(value instanceof Array) { 
     encoded += encodeURI(key+'='+value.join('&'+key+'=')); 
    } else { 
     encoded += encodeURI(key+'='+value); 
    } 

    encoded += '&'; 
    } 

    return encoded.slice(0, -1); 
} 

次のように次に、あなたのコードを更新する必要があります。

var myArr = [9,2,3]; 
var sendPost = new WLResourceRequest("/adapters/Cool/users/cool", WLResourceRequest.POST); 
var formParam = {"arr" : myArr}; 
sendPost.sendFormParameters(encodeFormData(formParam));