Jersey Guice访问帖子参数

时间:2010-11-27 07:09:55

标签: scala jersey guice

我有一个使用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参数吗?我不想直接在资源中注入MultivaledMap的表单,因为这需要从资源中一直传递下来,这会弄乱我的设计。

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

1 个答案:

答案 0 :(得分:0)

最简单的解决方案可能是一个servlet Filter,它可以完成你的建议:在Jersey处理HttpServletRequest并在请求范围的对象中设置数据之前拦截它。

如果你使用的是Guice Servlet,那么过滤至少比web.xml中的设置少一些。

如果您更喜欢仅限泽西岛的解决方案,则可以使用ContainerRequestFilter。这使您可以访问ContainerRequest,而ContainerRequest又为您提供了一个Form(一个javax.ws.rs.core.MultialuedMap)。