私はRestEasy 2.3.4.Finalを使ってREST APIを書いています。 私はインターセプタが私の要求のすべてを傍受し、PreProcessInterceptorが呼び出される最初のもの(すべての前)であることを知っています。特定のメソッドが呼び出されたときに呼び出されるようにするには、どのようにしてこのインターセプタを呼び出すことができるかを知りたいと思います。特定のメソッドでのみRESTEasy PreProcessInterceptorを使用する方法はありますか?
PreProcessInterceptorとAcceptedByMethodの両方を使用しようとしましたが、必要なパラメータを読み取ることができませんでした。 は例えば、私は、このメソッドが呼び出されたときにのみ、私のインターセプタを実行する必要があります。
@GET
@Produces("application/json;charset=UTF8")
@Interceptors(MyInterceptor.class)
public List<City> listByName(@QueryParam("name") String name) {...}
は、具体的には、私はそのその署名の@QueryParam("name")
を持っているすべてのメソッドで私のインターセプタを実行する必要があり、私は名前をつかんで、すべての前に何かをすることができます。
可能ですか?私はインターセプタ内の "名前"パラメータをキャッチしようとしましたが、それを行うことはできませんでした。
誰かが私を助けてくれますか?
ありがとう@eiden。これを前に試してみましたが、 '@ Context'を使用しませんでした。しかし、注入されたコンテキストからデータを取得しようとすると、コンテキストが初期化されていないため例外がスローされます。 org.apache.catalina.core.ContainerBase [jboss.web]。[default-host]。[/ api]](MSCサービススレッド1-3)コンテキスト初期化イベントをorg.jbossクラスのリスナーインスタンスに送信する例外.resteasy.plugins.server.servlet.ResteasyBootstrap:org.jboss.resteasy.spi.LoggableFailure:javax.servlet.http.HttpServletRequestのコンテキストデータが見つかりません – pulu
なぜ@Contextを使用しているのですか?とにかく、私は答えをコード例 – eiden
Excelent @ eidenで更新しました。私はほとんどそのように働いていますが、私は 'if(annotation.annotationType()== QueryParam.class){ QueryParam queryParam =(QueryParam)注釈を実現しませんでした。 return queryParam.value()。equals( "name"); ' 多くの方に感謝します! そしてもっと多くの人々に役立つことを願っています。 – pulu