我正在使用 Jersey 版本 2.27 创建 Jersey 应用程序。
我的资源之一是使用 @QueryParam 读取查询参数值。
我正在创建 ParamConverter 和 ParamConverterProvider,以便我可以指定参数的类型:
@GET
public MyObject getObject(@QueryParam("myvalue") MyParamObject param) {
}
我的问题是查询参数的解析取决于 HTTP header 的值。
如何访问 ParamConverter 内请求的 HTTP header ?
我尝试在 ParamConverterProvider 中注入(inject) ContainerRequestContext,但这会导致以下错误:
java.lang.IllegalStateException: Not inside a request scope.
最佳答案
我设法通过在 ParamConverterProvider
中注入(inject) ServiceLocator
并将其传递给 ParamConverter
来解决这个问题。然后,ParamConverter
可以在 fromString()
方法中获取 ContainerRequestContext
:
public Message fromString(final String value) {
final ContainerRequestContext requestContext = injector.getService(ContainerRequestContext.class);
}
关于java - 基于 HTTP header 值的 ParamConverter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53657358/