2016-07-12 105 views
0

我遇到問題,我不知道它是一個錯誤還是我做錯了什麼。Google Guice:從servlet轉發到servlet時請求參數會丟失

我有2個servlet。兩者都映射到的servlet在我GuiceServletContextListener:

serve("/", "/index.jsp").with(MainEntryServlet.class); 
serve("/foobar.jsp").with(FooBarServlet.class); 

在我FooBarServlet我做了以下內容:

String url = "/index.jsp?target=foo.jsp"; 
request.getRequestDispatcher(url).forward(request, response); 

的MainEntryServlet被預期調用,但參數target在請求參數丟失。這隻發生在從一個servlet轉發到另一個時。如果我將請求轉發到JSP,一切正常。

當我將servlet映射到web.xml而不是ServletModule時,target參數不會丟失。所以我猜Guice正在造成這個問題。我使用Tomcat 8作爲servlet容器。

任何想法如何解決這個問題?

回答

0

很可能我沒有得到你的問題,但你有沒有嘗試過?

String url = "/index.jsp"; 
request.setAttribute("target", "foo.jsp") 
request.getRequestDispatcher(url).forward(request, response); 

要設置響應的參數,可以使用setAttribute方法。

+0

將'target'從參數改爲屬性會導致很多重構。我想保留一個參數。 – stebeg