Jul*_*ont 5 redirect portlet liferay jsf-2 liferay-6
我有一个问题是实现一个简单的HTTP重定向.
我使用Liferay 6.0.6,我们的portlet是用JSF2.0/PortletFaces构建的.
我想在加载视图时调用重定向(而不是在触发操作时).目前,我的函数由PreRenderView监听器调用.
<f:metadata>
<f:event listener="#{myControler.dispatch}" type="preRenderView" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)
在这个函数中,我可以检查权限,做其他的事情,在某些情况下,我想将用户重定向到一个新的页面(而不是另一个视图).
我尝试了几种方法,但没有成功.具体来说,我认为这种方法可行:
getFacesContext().getExternalContext().redirect(url);
getFacesContext().responseComplete()
// => Can only redirect during ACTION_PHASE
Run Code Online (Sandbox Code Playgroud)
这个错误是合乎逻辑的,但是有一个强制重定向的解决方案.
它可以在另一个函数中实现,否则,我只需要Hibernate Session(在渲染阶段的开头设置)
你有想法解决这个问题吗?
谢谢!
ps:<redirect />或者?faces-redirect不使用portlet.
Ola*_*ock 10
您无法在渲染阶段按设计执行此操作.原因:
一个hacky解决方法是渲染一些javascript重定向,但这是非门户类的veeeery并且可以搞砸其他人的期望(此外,页面的某些部分可能已经被渲染,导致用户只填写表单以便由您重定向javascript例程.
请重新考虑问题并提出一个不同的解决方案 - 在门户环境中真的值得这样做.