我想在球衣2中将POJO用作@BeanParam
:
public class GetCompaniesRequest {
/** */
private static final long serialVersionUID = -3264610327213829140L;
private Long id;
private String name;
...//other parameters and getters/setters
}
@Path("/company")
public class CompanyResource {
@GET
public Response getCompanies(
@BeanParam final GetCompaniesRequest rq) {
...
}
}
GetCompaniesRequest
中有许多属性,我希望所有属性都可以作为@QueryParameter
使用。是否可以在每个属性上均不使用@QueryParam
来实现? 最佳答案
您可以注入UriInfo
并将所有请求参数从其中检索到Map
。
这样可以避免注入带有@QueryParam
批注的多个查询参数。
@GET
public Response getCompanies(@Context UriInfo uris)
{
MultivaluedMap<String, String> allQueryParams = uris.getQueryParameters();
//Retrieve the id
long id = Long.parseLong(allQueryParams.getFirst("id"));
//Retrieve the name
String name = allQueryParams.getFirst("name");
//Keep retrieving other properties...
}
否则,如果仍然需要使用
@BeanParam
,则必须用GetCompaniesRequest
注释@QueryParam
中的每个属性:public class GetCompaniesRequest implements MessageBody
{
@QueryParam("id")
private Long id;
@QueryParam("name")
private String name;
...
}
关于java - 默认情况下, Jersey 2中@BeanParam的所有属性上的@QueryParam,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23474199/