2014-09-24 86 views
0

我有以下形式的REST服務:JAXRS queryparam未加載攔截

@GET 
@NeedsInterception 
public void getSomething(@QueryParam("xxx") @MyAnnotation String thing) { 
    //Stuff 
} 

我然後有一個攔截對於@NeedsInterception

其中,我對@MyAnnotation註釋的元素執行一些邏輯。

但是,當調用攔截器時,MethodInvocation對象尚未使用QueryParam的值解析,而是總是使用"";

解決QueryParam問題後,我是否有辦法讓攔截髮生?

回答

0

不知道你正在使用哪一種攔截器,但jax-rs ReaderInterceptor打算將呼叫打包到MessageBodyReader.readFrom。由於您沒有發送請求正文,因此請求中不會使用這種攔截器。

一個ContainerRequestFilter應該有所幫助:

@Provider 
public class SomeFilter implements ContainerRequestFilter { 

    @Override 
    public void filter(ContainerRequestContext requestContext) throws IOException { 
     MultivaluedMap<String,String> queryParameters = requestContext.getUriInfo().getQueryParameters(); 
    } 

} 
+0

如果添加查詢參數containerRequestContext,那麼參數應該是通過調用ReaderInterceptorContext的getProperty(......)攔截器可用。 – Claude 2015-10-06 09:25:54