0

我想PhaseListener从 a 的 doPost 方法调用Servlet。我怎样才能做到这一点?

我不想这样做

RequestDispatcher dispatcher = request.getRequestDispatcher("/jsp/html/index.jsf"); dispatcher.forward(request, response);

因为在我PhaseListener正在检查viewId. 通过上述方法,视图 id 始终保持为index.xtml. 所以,我无法检查我的条件。

4

1 回答 1

0

您正在使用不会启动新请求的转发,因此您将保留原始请求 URI。您需要执行一个重定向,它会启动一个新请求并为您提供新的请求 URI。所以需要使用:

response.sendRedirect("/jsp/html/index.jsf");

请注意,response.sendRedirect()状态设置为 302。如果您需要 301 状态,则需要使用:

response.setStatus(301);
response.setHeader("Location", "/jsp/html/index.jsf");
于 2012-08-30T08:37:42.510 回答