Google Guice:从servlet转发到servlet时,请求参数丢失

时间:2016-07-12 07:42:56

标签: java tomcat servlets guice

我有一个问题,我不知道这是一个错误,还是我做错了什么。

我有2个servlet。两者都映射在我的GuiceServletContextListener中的ServletModule中:

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转发到另一个servlet时发生。如果我将请求转发给JSP,一切正常。

当我在web.xml中映射servlet而不是ServletModule时,target参数不会丢失。所以我猜Guice导致了这个问题。我正在使用Tomcat 8作为servlet容器。

知道如何解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我很可能没有得到你的问题,但你试过这个吗?

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

要为响应设置参数,您可以使用setAttribute方法。