我正在使用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,..',没有索引。不知道这是否正确。
有什么想法吗?
答案 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
});