Jersey が呼び出す前に URI に一致するリソース メソッドを取得するにはどうすればよいでしょうか? 質問する

Jersey が呼び出す前に URI に一致するリソース メソッドを取得するにはどうすればよいでしょうか? 質問する

私は実装しようとしていますContainerRequestFilterリクエストのパラメータのカスタム検証を実行します。メソッドのパラメータからカスタム注釈を取得できるように、URI に一致するリソース メソッドを検索する必要があります。

に基づくこの答え注射できるはずだ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、メソッドが実際に呼び出されるまでずっと を返すようです (その時点では検証を行うには遅すぎます)。

Methodリソース メソッドが呼び出される前に、指定された URI に一致する を取得するにはどうすればよいですか?


興味のある方のために、私は自分で必須パラメータ検証を試みています。ジャージー-351

ベストアンサー1

実際には、カスタム リクエスト フィルターに挿入してみる必要がありますResourceInfo。私は RESTEasy で試しましたが、そこではうまくいきました。利点は、Jersey 実装ではなく JSR インターフェイスに対してコードを書くことです。

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

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

おすすめ記事