java - 基于 HTTP header 值的 ParamConverter

标签 java jersey jersey-2.0

我正在使用 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/

相关文章:

java - 如何为 Jersey 中的空值返回 HTTP 404 而不是 HTTP 204 响应代码

java - Spring + jackson : Wrapping Response Body in response object

java - ClassNotFoundException:ClientBuilder Jersey 2.25.1 Tomcat 9.0

java - vlcj libvlc 流媒体桌面在一段时间后停止

jersey - @PostConstruct 方法一直在 Jersey 服务上调用

json - 我如何(取消)将日期编码为 jackson 的时间戳

java - 列出所有已部署的 REST 端点(spring-boot、jersey)

java - Jersey 2.0 的依赖注入(inject)

java - JVM 不能使用大页面内存,因为它没有足够的权限将页面锁定在内存中

java - App Engine Maven 编译错误