@FormParam只接收空列表/数组(Apache Wink)

时间:2012-03-26 09:07:12

标签: rest apache-wink

我正在使用Apache Wink实现REST服务,我似乎无法接收类型为array或List的参数。该呼叫来自ajax $ .post:

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

在服务器端,正确接收字符串和整数,但'param'参数始终为空(不为空,但零元素),无论变量是否定义为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 [] = string1,param [] = param2,..',没有索引。不知道这是否正确。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

我意识到这是一个老问题,但我遇到了类似的问题,最后通过将[]添加到FormParam名称的末尾来修复它。

所以不要使用@FormParam(“param”),而是拥有@FormParam(“param []”)

请注意,我也使用jQuery的$ .params方法来序列化我的数据,但我看起来你的调试显示了一个正确编码的表单字符串,所以我怀疑它只是缺少的[]。

答案 1 :(得分:-1)

当我将接受变量定义为:

时,这对我有用
@FormParam("paramName") List<String> paramList;

您可能还需要调整客户端调用,如:

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