我想在球衣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
放在每个属性上的情况下实现这一目标吗?
答案 0 :(得分:1)
您可以注入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;
...
}