【发布时间】:2013-04-24 14:20:47
【问题描述】:
我正在尝试实现一个ContainerRequestFilter,它对请求的参数进行自定义验证。我需要查找将与 URI 匹配的资源方法,以便我可以从方法的参数中抓取自定义注释。
基于this answer我应该可以注入ExtendedUriInfo然后用它来匹配方法:
public final class MyRequestFilter implements ContainerRequestFilter {
@Context private ExtendedUriInfo uriInfo;
@Override
public ContainerRequest filter(ContainerRequest containerRequest) {
System.out.println(uriInfo.getMatchedMethod());
return containerRequest;
}
}
但是getMatchedMethod 显然返回null,一直到该方法被实际调用(此时我进行验证为时已晚)。
如何在调用资源方法之前检索将与给定 URI 匹配的 Method?
对于那些感兴趣的人,我正在尝试推出自己的必需参数验证,如JERSEY-351 中所述。
【问题讨论】:
-
这必须是仅适用于 Jersey 的解决方案,还是您会考虑使用某种 AOP?
-
@condit 我目前正在探索将 AOP 与 Guice 结合使用。我可以“接受”任何解决方案,但我想将赏金奖励给仅限泽西岛的人,即使它是骇人听闻的。
-
您在寻找 Jersey 1.x 或 2.x 解决方案吗?
-
@condit 我仅限于最新的 Jersey 1.x,特别是 1.17。如果我理解正确,2.x 还没有准备好生产(尤其是因为 JAX-RS 2.0 尚未最终确定)。出于好奇,您知道 Jersey 2.0 是否会/是否会进行我正在寻找的那种参数验证?
-
是的 - 2.0 尚未准备好生产,但 JAX-RS 2.0 应该支持标准 bean 验证。
标签: java jersey jersey-1.0