泽西如何迭代参数?

时间:2015-08-28 11:38:35

标签: java rest jax-rs jersey-2.0 path-parameter

我有这个需要很多参数的put请求。

有没有办法迭代参数而不是手动访问它们。

@PUT
@Path("/{foobar}")
public Response createFoobar(
        @PathParam("foo1") String foo1,
        @PathParam("foo2") String foo2, 
        @PathParam("foo3") String foo3,
        @PathParam("foo4") String foo4
        ...
{
    FooBar foobar = new FooBar();
    foobar.foo1 = foo1;
    foobar.foo2 = foo2;
    ...

    return Response.status(200)...;
}

我想要什么

foreach(Object param in pathParams){
    if(param.name.equals("foo1")
        foobar.setFoo1((String)param);
    if(param.name.equals("foo2")
        foobar.setFoo2((String)param);
    ...
}

这可能吗?

1 个答案:

答案 0 :(得分:2)

您可以从UriInfo获取查询和路径参数:

@GET
public String get(@Context UriInfo ui) {
    MultivaluedMap<String, String> queryParams = ui.getQueryParameters();
    MultivaluedMap<String, String> pathParams = ui.getPathParameters();
}

要从POST或PUT请求的application / x-www-form-urlencoded内容中获取参数,请将javax.ws.rs.core.Form对象注入控制器方法:

@PUT
public String put(Form form) {
    MultivaluedMap<String, String> formParams = form.asMap();
}