我正在尝试编写一个GET方法并将int数组作为QueryParam发送给它.这就是我想要做的:
@GET
@Path("/test")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response test(@Context HttpServletRequest request,
@QueryParam("list") final int list[])
{
System.out.println(list.length);
return Response.ok().build();
}
这会导致500 Internal Server错误.当我尝试使用Integer列表时,它工作得很好. Jersey不支持将array作为参数,还是我做错了什么?
解决方法:
这在jersey中的实现,不支持将array作为参数.当您需要将其作为数组传递时,只需使用Arrays.asList(arr)将列表转换为数组即可将其传递
Java文档说方法参数的类型应该是:
1) Be a primitive type;
2) Have a constructor that accepts a single String argument;
3) Have a static method named valueOf or fromString that accepts a single String argument (see, for example, Integer.valueOf(String))
4) Be List, Set or SortedSet, where T satisfies 2 or 3 above. The resulting collection is read-only.
有时参数可能包含多个相同名称的值.如果是这种情况,则可以使用4)中的类型来获取所有值.
因此,在这种情况下将无法使用数组.