Я обновил свой Liferay до 6.0 и JSF с 1.2 до 2.1. Мой существующий код
((ActionResponse)context.getExternalContext().getResponse()).sendRedirect( redirect );
context.responseComplete();
Здесь перенаправление определяется следующим образом:
String redirect = "/namingportal/group/customercenter/accountSearch";
Приведенный выше URL-адрес — это страница портлета, на которую должен быть перенаправлен запрос.
Начал ломаться с ошибкой: java.lang.IllegalStateException: Set параметр рендеринга уже был вызван в com.liferay.portlet.ActionResponseImpl.sendRedirect(ActionResponseImpl.java:48)
Погуглив немного, я решил, что приведенный выше код следует заменить следующим:
Решение 1:
context.getExternalContext().redirect(redirect);
Когда я попытался с Решением 1, это дало мне ошибку FacesFileNotFound /namingportal/group/customercenter/accountSearch.xhtml, на самом деле он ищет xhtml, а не портлет.
У меня также есть это в моем web.xml:
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
Сообщите мне, есть ли другой альтернативный способ перенаправления на портлет из метода управляемого компонента JSF с использованием Liferay 6.0 и JSF 2.1.
Спасибо