我有以下形式的REST服务:
@GET
@NeedsInterception
public void getSomething(@QueryParam("xxx") @MyAnnotation String thing) {
//Stuff
}
然后我有@NeedsInterception
的拦截器。
在其中,我对使用@MyAnnotation
注释的元素执行了一些逻辑。
但是,当调用拦截器时,MethodInvocation
对象尚未使用QueryParam
的值解析,而是始终""
;
在QueryParam
解决后,我有办法让拦截发生吗?
答案 0 :(得分:0)
不知道您正在使用哪种拦截器,但jax-rs ReaderInterceptor旨在包含对MessageBodyReader.readFrom
的调用。由于您没有向请求正文发送@GET
请求,因此无法使用此类拦截器。
ContainerRequestFilter应该有所帮助:
@Provider
public class SomeFilter implements ContainerRequestFilter {
@Override
public void filter(ContainerRequestContext requestContext) throws IOException {
MultivaluedMap<String,String> queryParameters = requestContext.getUriInfo().getQueryParameters();
}
}