在Jersey中将@数组作为@QueryParam发送

时间:2016-09-02 09:42:58

标签: java jersey

我正在尝试编写一个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内部服务器错误。当我尝试使用List of Integer时,它工作得很好。 Jersey不支持数组作为参数,还是我做错了什么?

1 个答案:

答案 0 :(得分:3)

在球衣中执行此操作,不支持数组作为参数。当您需要将其作为数组传递时,只需通过使用 Arrays.asList(arr)

将列表转换为数组来传递它

java doc说方法参数的类型应为:

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)中的类型可用于获取所有值。

因此在这种情况下使用数组是不可能的。