我在实现一个简单的 HTTP 重定向时遇到了问题。
我使用 Liferay 6.0.6,我们的portlet是用JSF2.0 / PortletFaces构建的。
我想在加载视图时调用重定向(而不是在触发操作时)。目前,我的函数由 PreRenderView 侦听器调用。
<f:metadata>
<f:event listener="#{myControler.dispatch}" type="preRenderView" />
</f:metadata>
在这个函数中,我可以检查权限,做其他事情,在某些情况下我想将用户重定向到一个新页面(而不是另一个视图)。
我尝试了几种方法,都不成功。具体来说,我认为这种方法会起作用:
getFacesContext().getExternalContext().redirect(url);
getFacesContext().responseComplete()
// => Can only redirect during ACTION_PHASE
此错误是合乎逻辑的,但是否有强制重定向的解决方案。
它可以在另一个函数中实现,否则调用,我只需要 Hibernate Session(在 Render Phase 开始时设置)
你有解决这个问题的想法吗?
谢谢!
ps:<redirect />
或者?faces-redirect
不使用portlet。