ParamConverter 基于 HTTP header 值

ParamConverter based on HTTP header value

我正在使用 Jersey 2.27 版创建 Jersey 应用程序。

我的资源之一是使用@QueryParam 读取查询参数值。

我正在创建一个 ParamConverter 和 ParamConverterProvider,以便我可以指定参数的类型:

@GET
public MyObject getObject(@QueryParam("myvalue") MyParamObject param) {

}

我的问题是查询参数的解析取决于 HTTP header 的值。

如何在 ParamConverter 中访问请求的 HTTP header?

我尝试在 ParamConverterProvider 中注入 ContainerRequestContext,但这会导致以下错误:

java.lang.IllegalStateException: Not inside a request scope.

我设法通过在 ParamConverterProvider 中注入 ServiceLocator 并将其传递给 ParamConverter 来解决它。然后 ParamConverter 可以在 fromString() 方法中获取 ContainerRequestContext

public Message fromString(final String value) {
    final ContainerRequestContext requestContext = injector.getService(ContainerRequestContext.class);
}