我将 liferay 升级到 6.0,将 JSF 从 1.2 升级到 2.1。我现有的代码
((ActionResponse)context.getExternalContext().getResponse()).sendRedirect( redirect );
context.responseComplete();
这里重定向定义如下:
String redirect = "/namingportal/group/customercenter/accountSearch";
上面的 URL 是请求必须重定向到的 portlet 页面。
开始出现错误:java.lang.IllegalStateException: Set render parameter has already been called at com.liferay.portlet.ActionResponseImpl.sendRedirect(ActionResponseImpl.java:48)
在做了一些谷歌之后,我认为上面的代码应该替换为以下代码:
解决方案1:
context.getExternalContext().redirect(redirect);
当我尝试使用解决方案 1 时,它给了我错误 FacesFileNotFound /namingportal/group/customercenter/accountSearch.xhtml,它实际上是在寻找 xhtml 而不是 portlet。
我的 web.xml 中也有这个:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
请让我知道是否有任何其他替代方法可以使用 Liferay 6.0 和 JSF 2.1 从 JSF 托管 bean 方法重定向到 portlet。
谢谢