如果我添加 Deltaspike,RequestDispatcher#forward 将重定向而不是转发

RequestDispatcher#forward is redirecting instead of forwarding if I add Deltaspike

我正在将 Web 应用程序部署到 JBoss EAP6 和 Glassfish 4 中,一切都按预期工作,直到我将 deltaskpike 罐子添加到项目中。

启用 deltaskpike 后,servlet 中的以下代码:

request.getServletContext().getRequestDispatcher("/faces/page.xhtml").forward(request, response);

将向浏览器发送重定向响应(HTTP: 302),而不是在服务器端转发。如果我从应用程序中删除 deltaskpike 罐子,调度程序转发将按预期工作。

如果我转发到 FacesServlet 以外的任何东西,它会按预期工作。

Deltaspike 是否修改了 RequestDispatcher 的默认行为?

我知道了,Deltaspike 没有修改请求调度程序。它实际上做的是通过向浏览器发送一个带有参数的重定向响应,向每个没有参数的 JSF 请求添加一个 window id 参数(称为 dswid)。

要避免重定向,只需将 ?dswid={the_current_value} 添加到您的调度程序路径。