私は実装しようとしています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;
}
}