自定义泽西参数解组

时间:2014-05-08 12:31:04

标签: java jax-rs jersey-2.0

我作为查询参数收到一个像

这样的String行
parameter=123,456,789

我想直接在我的控制器中获取List<Integer>。像这样:

@GET
@Path(REST_PATH)
@Produces(MediaType.APPLICATION_JSON)
public Response getSomeStuff(@MagicalThing("parameter") List<Integer> requiredList)

除自定义提供程序和其他类型外,可以执行的操作:

https://stackoverflow.com/a/6124014

更新:自定义注释解决了这个难题http://avianey.blogspot.de/2011/12/exception-mapping-jersey.html

1 个答案:

答案 0 :(得分:0)

没有内置机制来执行此操作。您需要在方法或提供程序中自己拆分该字符串,或者在您自己的具有带字符串参数的构造函数的对象中拆分该字符串,例如:

public Response getSomeStuff(@QueryParam("parameter") MyList requiredList) {
    List<String> list = requiredList.getList();
}

MyList可能是:

 public class MyList {
    List<String>  list;
    public MyList(Srting parameter) {
        list = new ArrayList<String>(parameter.split(","));    
    }

    public List<String> getList() {
        return list;   
    }
}

然后在你的方法中获取我的清单。