2015-08-28 62 views
0

我有这个需要很多参数的请求。Jersey如何迭代参数?

那么有没有一种方法来迭代参数,而不是手动访问它们。

@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); 
    ... 
} 

这可能吗?

回答

2

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

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

要从应用程序/ X WWW的窗体-urlencoded一个POST的内容或PUT请求获得的参数,注入一个javax.ws.rs.core.Form对象成控制器方法:

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

Thx用于包含PUT详细信息 – Gobliins