В моем preRenderView
вызываемом методе выполняются некоторые проверки, и если это не удается, произойдет перенаправление.
Но я получаю IllegalStateException
Information: Exception when handling error trying to reset the response.
java.lang.IllegalStateException
at org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:524)
at com.sun.faces.context.ExternalContextImpl.redirect(ExternalContextImpl.java:602)
at package.FacesContextUtils.redirect(FacesContextUtils.java:581)
Вот код:
public void initPreRenderView(final String value) throws DatabaseException
{
if (value == null)
{
FacesContextUtils.addMessageInvalidLinkRedirect(context, url);
return;
}
}
В основном функция полезности состоит из:
public static void addMessageInvalidLinkRedirect(FacesContext context, String url)
{
context.addMessage(null, new FacesMessage("Invalid link..."));
try
{
context.getExternalContext().redirect(url);
}
catch (final IOException e)
{
// add error message
}
}
Многие ответы на эту тему предполагают добавление возврата после оператора перенаправления, что я сделал в методе preRenderView.
Изменить:
Происходит перенаправление и все работает как положено. Просто хочу избавиться от этого сообщения об ошибке.
<f:viewParam>
. См. stackoverflow.com/q/4888942/1065197. - person Luiggi Mendoza   schedule 10.07.2013