2012-03-26 32 views
0

我正在使用Apache Wink實現REST服務,我似乎無法接收類型爲數組或列表的參數。該呼叫正從阿賈克斯$。員額提出:@FormParam只接收空列表/數組(Apache Wink)

$.post(url, 
    { param: ['string1', 'param2', 'x', 'etc...etc....etc'], 
     str2: "str2"}, 
    function(data) {// do something  
}); 

在服務器端,字符串和整數被正確接收,但「PARAM」參數總是收到空(NOT NULL,但零種元素),該變量是否定義爲String [],List,Set ...。接收功能定義爲:

@POST @Produces("application/json") @Path("eee") 
public Response eee(@FormParam("str1") String str1, @FormParam("param") String[] param, @FormParam("str2") String str2) 

調試時,我可以看到的上下文變量與像一個表條目:

wink.formParameters=[param%5B%5D=string1,param%5B%5D=param2,param%5B%5D=x,param%5B%5D=etc...etc....etc,str2=str2] 

這相當於「PARAM [] =字符串1,PARAM [] = param2,..',沒有索引。不知道這是否正確。

任何想法?

回答

-1

這對我的作品時,我定義接受變量:

@FormParam("paramName") List<String> paramList; 

您可能還需要調整客戶端調用,比如:

$.post(url, 
    { paramName: "string1", 
    { paramName: "string2", 
    { paramName: "string3", 
     str2: "str2"}, 
    function(data) {// do something  
}); 
+0

那裏有一些語法問題。但是對於數據{x:「string1」,x:「string2」,x:「string3」,str:「str」}和列表聲明,該列表僅獲得1個元素(最後一個)。 – user1292542 2012-03-30 09:35:11

2

我意識到這是一個老問題,但我有一個類似的問題,我最終通過在FormParam名稱的末尾添加[]來修復它。的

因此而不是@FormParam(「參數」),你將有@FormParam(「參數[]」)

請注意,我還使用jQuery的$ .params方法序列化我的數據,但我它看起來像你的調試顯示一個正確編碼的表單字符串,所以我懷疑它只是缺少的[]。