如何使用Guice注入RequestParameters

时间:2011-03-22 13:00:25

标签: java jetty jersey guice

我正在尝试将RequestParamters注入到我用作servlet的Guice驱动的类中。我正在使用Jersey& amp;嵌入式Jetty。我宣布这个类是这样的:

@Path("/my_url")
@RequestScoped
public class MyUrlServlet {

// try to inject the RequestParameters
@Inject
@RequestParameters
private final Map<String, String[]> reqParms;
...
}

我在运行时遇到错误:

1) No implementation for java.util.Map was bound.
  while locating java.util.Map
    for parameter 1 at com.nurloc.rest.account.LoginServlet.(MyUrlServlet.java:31)
  at com.nurloc.startup.ServletMappingConfig$1.configureServlets(ServletMappingConfig.java:34)

docs还说明如果你在单例类中使用它,你需要使用一个提供者,我不确定如何写。它是提供Map<String, String[]>的提供商吗?如果是这样,我也没有运气。

1 个答案:

答案 0 :(得分:2)

您没有显示您的“servlet”类是如何被绑定或使用的,但它看起来像是因为无论出于何种原因而在请求之外创建它。如果是这种情况,您将无法直接注入参数。您应该能够注入Provider,如下所示:

@Inject @RequestParameters
private Provider<Map<String, String[]>> reqParamsProvider;

然后,您必须确保在请求时只在提供商处拨打get()