gpt4 book ai didi

java - @QueryParam 默认情况下在 jersey 2 @BeanParam 的所有属性上

转载 作者:行者123 更新时间:2023-11-30 11:19:00 25 4
gpt4 key购买 nike

我想在 jersey 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 放在每个属性上的情况下实现此目的?

最佳答案

您可以注入(inject) UriInfo 并将所有请求参数从中检索到 Map

这将使您避免使用 @QueryParam 注释注入(inject)多个查询参数。

@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 ,则必须使用 @QueryParam 注释 GetCompaniesRequest 中的每个属性:

public class GetCompaniesRequest implements MessageBody 
{
@QueryParam("id")
private Long id;
@QueryParam("name")
private String name;
...
}

关于java - @QueryParam 默认情况下在 jersey 2 @BeanParam 的所有属性上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23474199/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com