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

我正在尝试编写一个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)中的类型来获取所有值.

因此,在这种情况下将无法使用数组.

上一篇:org.glassfish.jersey.server.ContainerException:java.io.IOException:流关闭


下一篇:Java-Jersey Jackson停用filterprovider