[英]How to inject dynamic Bean parameter into Jersey method?
我正在使用Jersey 2.0和Spring開發一個Web服務。
我希望能夠將bean注入我的方法中。 可以使用@BeanParam
獲得Bean參數。 但是,我需要注入“動態” bean。 我需要此bean包含傳遞給該方法的所有查詢參數。
例如,如果我請求GET /posts?title=lorem&date=2011-01-01&tag=game
我有一個像
@Path('/posts')
public class PostService{
@GET
public Response getAll(@QueryParam("page") int page,
@QueryParam("pageSize") int pageSize,
@BeanParam SearchParameters sp){
sp.getTitle();
sp.getDate();
sp.getTag();
}
}
我可能更容易獲得查詢參數Map<String, String>
。
@BeanParam允許將更多的可注入參數放入一個bean(POJO)中,從而使您在資源方法,資源方法構造函數中或資源類中沒有那么多可注入參數。 您可以將它們封裝到注入@BeanParam的bean中。 這處理諸如@ HeaderParam,@ QueryParam之類的參數。 但是您也可以將ContainerRequestContext,UriInfo,SecurityContext或任何其他可注入對象注入到您的bean中。
但是,在這種情況下,您需要使用查詢參數圖,因為您需要所有參數,而不僅需要以前已知的特定參數。 為了獲取它們,您可以注入UriInfo並從中獲取查詢參數:
@GET
public Response get(@Context UriInfo uriInfo) {
MultivaluedMap<String, String> queryParameters = uriInfo.getQueryParameters();
String myParam = queryParameters.getFirst("myParam");
...
}
或者,您可以使用@BeanParam並將@UriInfo注入到bean中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.