У меня проблема с реализацией простого перенаправления HTTP.
Я использую Liferay 6.0.6, наши портлеты созданы с 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
Эта ошибка логична, но есть ли решение для force перенаправления.
Это может быть реализовано в другой функции, называемой иначе, мне нужен только Hibernate Session (устанавливается в начале фазы рендеринга)
У вас есть идеи для решения этой проблемы?
Спасибо!
ps: <redirect />
или ?faces-redirect
не работают с портлетами.