Как ввести RequestParameters с помощью Guice - PullRequest
2 голосов
/ 22 марта 2011

Я пытаюсь вставить RequestParamters в класс на базе Guice, который я использую в качестве сервлета.Я бегу с Джерси и встроенной Джетти.Я объявляю класс следующим образом:

@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)

В документах также утверждается, что если вы используете это вкласс Singleton, вам нужно использовать провайдера, который я не уверен, как написать.Это поставщик, который предоставляет Map<String, String[]>?Если так, то мне тоже не повезло.

1 Ответ

2 голосов
/ 22 марта 2011

Вы не показываете, как ваш класс "сервлет" связан или используется, но мне кажется, что он создается вне запроса по любой причине.Если это так, вы не сможете ввести параметры напрямую.Вместо этого вы сможете ввести Provider, например, так:

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

После этого вы должны быть уверены, что звоните get() только провайдеру, когда получаете запрос.

...