我有以下运行的课程
@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
,但没有成功。
答案 0 :(得分:1)
我找到了,
刚刚注入
@Context
private UriInfo uri;
并在我的postProccess方法中使用:
MultivaluedMap<String, String> pathParameters = uri.getPathParameters();
String first = pathParameters.getFirst("idSubsidiary");
如果有更好的方法,请随时提供帮助。