如何使用@QueryParam(“list”)最终List <mydto> listDTO </mydto>从@GET获取值

时间:2013-12-04 15:58:05

标签: java rest jax-rs

我的服务应该收到List<Object>,在我的情况下,FaturamentoDTO ...例如:

    @GET
    @Path(value="/teste")
    @Produces(MediaType.APPLICATION_JSON)
    public List<FaturamentoDTO> teste(@QueryParam("list") final List<FaturamentoDTO> listFatsDTO) {
        for (FaturamentoDTO f : listFatsDTO) {
            // do my stuff...
        }
        return listFatsDTO;
    }

所以我的问题是,如何发送和接收值。

JAX-RS规范说:

支持以下类型:

1原始类型

2具有接受单个String参数的构造函数的类型。

3具有名为valueOf且带有单个String参数的静态方法的类型。

4 List,Set或SortedSet,其中T满足上面的2或3。

但即使使用构造函数,我也无法获得值。

2 个答案:

答案 0 :(得分:0)

如果您要发送除简单字符串以外的任何内容,我建议您使用具有相应请求正文的POST。但是必须有GET才能实现。

您的客户如何发送请求? 您的客户应发送与以下内容相对应的请求:

获取http://example.com/services/teste?list=item1&list=item2&list=item3

答案 1 :(得分:0)

查询参数对复杂数据结构没有任何特定支持,因此您需要自己实现。我面对类似的事情,最后使用数据的JSON表示作为查询参数值。例如(请注意,JSON应该是URL编码的,但我将其留下以使其可读)

http://service?item={"foo" : "value1", "bar" : "value2"}&item={"foo" : "value3", "bar" : "value4"}

然后你可以写一个ParamConverter<T>来将JSON解组到你的FaturamentoDTO中。我正在使用JAXB / MOXy,但这可以使用您选择的JSON处理库来完成。