在我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 方法中做了。
编辑:
重定向发生,一切都按预期工作。只是想摆脱这个错误信息。