我正在使用Jersey版本2.27创建一个Jersey应用程序。
我的资源之一是使用@QueryParam读取查询参数值。
我正在创建一个ParamConverter和ParamConverterProvider,以便可以指定参数的类型:
@GET
public MyObject getObject(@QueryParam("myvalue") MyParamObject param) {
}
我的问题是查询参数的解析取决于HTTP标头的值。
如何在ParamConverter中访问请求的HTTP标头?
我尝试将ContainerRequestContext注入ParamConverterProvider内,但这会导致以下错误:
java.lang.IllegalStateException:不在请求范围内。
答案 0 :(得分:1)
我设法通过在ServiceLocator
内注入ParamConverterProvider
并将其传递给ParamConverter
来解决它。然后ParamConverter
可以通过ContainerRequestContext
方法获取fromString()
:
public Message fromString(final String value) {
final ContainerRequestContext requestContext = injector.getService(ContainerRequestContext.class);
}