Jersey 如何迭代参数?
Jersey howto iterate over parameters?
我有这个需要很多参数的 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);
...
}
这可能吗?
您可以从 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();
}
我有这个需要很多参数的 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);
...
}
这可能吗?
您可以从 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();
}