使用RestEasy在PostProcessInterceptor中获取@PathParam值

时间:2013-11-19 16:38:02

标签: rest java-ee jax-rs resteasy post-processing

我有以下运行的课程

@Provider
@ServerInterceptor
@RedirectPrecedence
public class SubsidiaryOpenInterceptor implements PostProcessInterceptor, AcceptedByMethod {

@Override
public boolean accept(Class clazz, Method method) {
    final Annotation[][] paramAnnotations = method.getParameterAnnotations();
    for (Annotation[] paramAnnotation : paramAnnotations) {
        for (Annotation a : paramAnnotation) {
            if (a instanceof PathParam && ((PathParam) a).value().equals("idSubsidiary"))
                return true;
        }
    }
    return false;
}

@Override
public void postProcess(ServerResponse response) {
    final Annotation[][] paramAnnotations = response.getResourceMethod().getParameterAnnotations();
    for (Annotation[] paramAnnotation : paramAnnotations) {
        for (Annotation a : paramAnnotation) {
            if (a instanceof PathParam && ((PathParam) a).value().equals("idSubsidiary")) {
                // get the value of "idSubsidiary", it should be an Integer, and do something.
            }
        }
    }
}
}

现在我想从请求的网址中检索@PathParam("idSubsidiary") Integer idSubsidiary中设置的idSubsidiary的值。

现阶段是否可以了解它?

是否有一种策略可用于在此流程中获取此数据?

我尝试使用MessageBodyWriterInterceptor,但无法使用它。 还尝试使用@Context HttpServletRequest req,但没有成功。

1 个答案:

答案 0 :(得分:1)

我找到了,

刚刚注入

@Context
private UriInfo uri;

并在我的postProccess方法中使用:

MultivaluedMap<String, String> pathParameters = uri.getPathParameters();
String first = pathParameters.getFirst("idSubsidiary");

如果有更好的方法,请随时提供帮助。