java - 如何在 Jersey 调用之前获取与 URI 匹配的资源方法?

标签 java jersey jersey-1.0

我正在尝试实现 ContainerRequestFilter对请求的参数进行自定义验证。我需要查找将与 URI 匹配的资源方法,以便我可以从方法的参数中抓取自定义注释。

基于 this answer我应该可以注入(inject) 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 中所述.

最佳答案

实际上,您应该尝试将 ResourceInfo 注入(inject)到您的自定义请求过滤器中。我已经用 RESTEasy 试过了,它在那里工作。优点是您针对 JSR 接口(interface)而不是 Jersey 实现进行编码。

public class MyFilter implements ContainerRequestFilter
{
    @Context
    private ResourceInfo resourceInfo;

    @Override
    public void filter(ContainerRequestContext requestContext)
            throws IOException
    {
        Method theMethod = resourceInfo.getResourceMethod();
        return;
    }
}

关于java - 如何在 Jersey 调用之前获取与 URI 匹配的资源方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16303694/

相关文章:

java - PlantUML - 如何将私有(private)方法表示为序列图中的嵌套生命线

java - Jersey 在序列化期间省略 XmlTransient 注释

java - Spring Autowired Bean 未注入(inject)

jax-rs - 基于 JaxRs 的 Swagger 的 spring boot 应用程序配置

java - 小程序或应用程序应该捕获错误异常吗?

java - GWT 2.5.1 CellTable 和 SimplePager 问题

java - 如何让一个 Controller 正确调用第二个 Controller 方法来更新第二个 Controller fxml/node?

java - 当服务部署在服务器中时,如何进行 JUnit 测试 Jersey?

java - 如何从 angularjs 和 CORS 支持将文件上传到 Jersey

java - Jersey 多个构造函数@inject