【问题标题】:Jersey Guice Accessing Post ParametersJersey Guice 访问帖子参数
【发布时间】:2010-11-27 07:09:54
【问题描述】:

我有一个使用 Guice 连接的 Jersey 客户端。真的很喜欢:)

资源也是使用 Guice 创建的。

类似:

@Inject
class TestResource {
  @Inject DataFatcher fetcher, 
  ...
  ...
}

现在,DataFetcher 对象是使用 Guice 创建的,并且具有使用组合的深层嵌套 guice 创建的对象。现在,其中一些对象需要访问使用 POST 传递的参数。

我有一个 HttpServletModule 可以为我做这件事。我认为这样做是正确的。


HttpServletModule.java

Map<String, String[]> providerRequestParametersMap(HttpServletRequest reuquest) {
  request.getParametersMap()
}

现在,不幸的是,Jersey 似乎已经拦截了请求并从请求参数 Map 中删除了 POST 参数。所以,我的这张地图是空的。

如何访问 Guice 中的 POST 参数?我不想直接在 Resource 中注入 MultivaledMap 的 Form,因为这需要从 Resource 一路向下传递,这会打乱我的设计。

非常感谢任何提示。我可以考虑创建一个过滤器,在 Jersey 过滤器启动之前拦截 HttpServletRequest。希望有一个更好、更简单的解决方案:)。

【问题讨论】:

    标签: scala jersey guice


    【解决方案1】:

    最简单的解决方案可能是执行您建议的 servlet 过滤器:在 Jersey 处理之前拦截 HttpServletRequest 并在请求范围的对象中设置数据。

    如果您使用的是 Guice Servlet,则过滤设置至少比 web.xml 中的设置少几次。

    如果您更喜欢仅 Jersey 的解决方案,您可以使用 ContainerRequestFilter。这使您可以访问 ContainerRequest,而后者又为您提供了一个 Form(一个 javax.ws.rs.core.MultivaluedMap)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-29
      • 2011-11-04
      • 1970-01-01
      • 2016-04-11
      相关资源
      最近更新 更多