IllegalStateException:呈现响应后非法尝试设置 ViewHandler

IllegalStateException: Illegal attempt to set ViewHandler after a response has been rendered

我一直在从 JSF 1.0 迁移到 JSF 2.2。

我在尝试 运行 我的应用程序时遇到以下错误:

JSP Error page Illegal attempt to set ViewHandler after a response has been rendered. | java.lang.IllegalStateException: Illegal attempt to set ViewHandler after a response has been rendered.

在阅读了一些问题的解决方案后,我猜这是一个视图处理程序定义的问题。 什么应该写在 faces-config.xml 而不是:

<view-handler>org.apache.myfaces.tomahawk.application.jsp.JspTilesViewHandlerImpl</view-handler> ?

显然,如果这不是问题所在,我也很乐意听到。

java.lang.IllegalStateException: Illegal attempt to set ViewHandler after a response has been rendered.

当尝试以编程方式设置如下后的ViewHandler应用程序已经服务第一个 request/response:

context.getApplication().setViewHandler(new SomeViewHandler());

因此,这与 faces-config.xml 中的任何 <view-handler> 条目无关。其他一些组件库必须这样做。众所周知,RichFaces 3.x 会这样做(并根据对问题的评论进行确认)。您需要将其升级到 JSF 2.x 兼容版本,至少是 RichFaces 4.x.

另请参阅: