【问题标题】:Jersey, @QueryParam List<String>泽西岛,@QueryParam 列表<String>
【发布时间】:2015-09-07 00:28:14
【问题描述】:

我想取一个列表作为参数,但是列表的值与java版本列表不对应。例如@QueryParam("orderBy") 列出 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 query-parameters


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-06
        • 1970-01-01
        • 2011-08-02
        • 1970-01-01
        • 2017-05-13
        • 2013-12-21
        • 1970-01-01
        • 2011-10-14
        相关资源
        最近更新 更多