泽西岛,@QueryParam 列表<String>

Jersey, @QueryParam List<String>

我想取一个列表作为参数,但是列表的值与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();
}`

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

使用对象。您可以创建一个 ActivitiesRequest class,然后在 class 中定义您的变量。您也可以这样做来回应。