基于HTTP标头值的ParamConverter

时间:2018-12-06 18:11:16

标签: java jersey jersey-2.0

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

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

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

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

}

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

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

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

  

java.lang.IllegalStateException:不在请求范围内。

1 个答案:

答案 0 :(得分:1)

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

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