2011-03-22 68 views
2

我想要將RequestParamters注入到我作爲servlet使用的Guice-powered類中。我正在運行與澤西島&嵌入式碼頭。我聲明類是這樣的:如何使用Guice注入RequestParameters

@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[]>?如果是這樣,我也沒有任何運氣。

回答

2

你沒有展示你的「servlet」類是如何被綁定或使用的,但是在我看來,它是出於任何原因在請求之外創建的。如果是這種情況,您將無法直接注入參數。你應該能夠注入Provider代替,就像這樣:

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

然後你必須確保你只調用get()的提供商,當你在一個請求是。

+0

謝謝!我認爲我是個白癡,在我嘗試時沒有正確注入提供者。我遺漏了@RequestParameters(但是@Inject和Provider符號正確)。 – Dave 2011-03-22 15:46:21