我有一个portlet,其中doView
方法使用以下指令调用display.jsp
页面:
getPortletContext().getRequestDispatcher("/views/display.jsp").dispatcher.include(request, response);
在display.jsp
中,我想重定向到外部网站:
<%
response.sendRedirect("http://www.google.fr");
%>
为什么它根本不起作用?
(我在JSP中放了一个<div>foobar<div>
,看看它是否有效,但确实如此
是否有另一种解决方案可以重定向到外部URL?
(想法是“留在”portlet / portal中,用户可以在其中看到“目标”网站)
问候。
答案 0 :(得分:1)
如果查看Portlet 2.0 specification的第141页,它会提到HttpServletRespone #sendRedirect()在呈现阶段是NO-OP。
这就是为什么你没有看到这个工作的原因。根据语义,响应对象是一个HttpServletResponse,它对应于整个页面的响应,而不仅仅是该JSP所属的portlet。由于页面现在是多个portlet的组合,并且每个portlet都有自己的生命周期,因此您应该使用renderResponse,actionResponse对象之一并避免使用servlet对象。
我现在还没找到原始问题的解决方案。