Jersey,@ QueryParam List <string>

时间:2015-06-21 13:20:21

标签: jersey query-parameters

我想将列表作为参数,但列表的值与java版本列表不对应。例如@QueryParam(“orderBy”)List orderBy) 此列表的值为[age,name]作为元素。

是否可以单独获得该值。像第一元素年龄和第二元素名称。

`

@GET
@Path("/range")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public Response searchForActivitiesWithRange(@QueryParam(value = "description")List<String> descriptions,
                                             @QueryParam(value = "durationFrom") int durationFrom,
                                             @QueryParam(value = "durationTo") int durationTo) {


    List<Activity> activities = activityRepository.findByDescriptionandDuration(descriptions,durationFrom,durationTo);

    if (activities == null || activities.size() == 0) {
        return Response.status(Status.NOT_FOUND).build();
    }

    return Response.ok().entity(new GenericEntity<List<Activity>>(activities){}).build();
}`

2 个答案:

答案 0 :(得分:2)

不自动。每个查询参数都由jersey作为String读取,然后,它尝试转换您指定的参数的数据类型。 您必须拆分param String或客户端,发送多个具有相同名称的param,并像多值Map一样读取它们,其中键是param名称,值是包含所有值的列表。

答案 1 :(得分:0)

使用对象。您可以创建一个ActivitiesRequest类,然后在类中定义变量。您也可以为回复做到这一点。