【发布时间】:2012-06-28 13:28:04
【问题描述】:
我将 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:设置渲染参数已被调用 在 com.liferay.portlet.ActionResponseImpl.sendRedirect(ActionResponseImpl.java:48)
google了一下,发现上面的代码应该换成下面这样:
解决方案一:
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,请告诉我。
谢谢
【问题讨论】:
-
用浏览器直接打开该页面的URL是什么? IE。当这个页面被正确请求时,你在浏览器地址栏中看到了什么?
-
这里是托管 bean 应该重定向的正确 URL:https://
: /namingportal/group/customercenter/accountSearch。当我直接在浏览器中键入此 URL 时,portlet 会正确呈现。 -
啊,好吧。这将是特定于 portlet 的 ..
-
是的,我尝试直接在浏览器的地址栏中输入/粘贴 URL。