【问题标题】:java.lang.IllegalStateException: Illegal attempt to set ViewHandler after a response has been renderedjava.lang.IllegalStateException:在呈现响应后非法尝试设置 ViewHandler
【发布时间】:2014-04-20 09:31:49
【问题描述】:

我的 Java EE Web 应用程序在 Glassfish 2.1 上运行良好。现在我想迁移到 Glassfish 3.1.1,但是在成功部署 war 文件后,它给出了以下错误:

WARNING: ApplicationDispatcher[/Myapp] PWC1231: Servlet.service() for servlet Faces Servlet threw exception
java.lang.IllegalStateException: Illegal attempt to set ViewHandler after a response has been rendered.

我的应用程序使用以下框架。

  • Spring 框架 3.0.2
  • JSF 2.0
  • RichFaces 3.3.3 最终版

它是用 JDK 1.6 编译的。

这个问题是怎么引起的,我该如何解决?

编辑

我已按照here提供的修改

我对richfaces的依赖如下:-

   <dependency>
        <groupId>org.richfaces.framework</groupId>
        <artifactId>richfaces-api</artifactId>
        <version>3.3.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.richfaces.framework</groupId>
        <artifactId>richfaces-impl-jsf2</artifactId>
        <version>3.3.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.richfaces.ui</groupId>
        <artifactId>richfaces-ui</artifactId>
        <version>3.3.3.Final</version>
    </dependency>

我的 jsf 依赖项是

        <dependency>
            <groupId>com.sun.faces</groupId> 
            <artifactId>jsf-api</artifactId> 
            <version>2.0.2</version> 
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId> 
            <artifactId>jsf-impl</artifactId> 
            <version>2.0.2</version> 
        </dependency>

在 web.xml 中添加上下文参数如下:-

<context-param>
    <param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
    <param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<context-param>
    <param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name>
    <param-value>true</param-value>
</context-param>

用 2.5 版修改了我的应用程序描述符,例如:

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

我的 在 faces-config 中如下:-

 <application>
        <navigation-handler >
            org.navigation.CustomNavigationHandler
        </navigation-handler>

        <view-handler>
            org.ajax4jsf.application.AjaxViewHandler
        </view-handler>
<!--        <view-handler>
            com.sun.facelets.FaceletViewHandler
        </view-handler>-->
        <variable-resolver>org.springframework.web.jsf.DelegatingVariableResolver</variable-resolver>
        <message-bundle>MyMessages</message-bundle>
    </application>

应用程序部署成功,但之后在浏览器中启动应用程序时出现类转换异常错误:

服务器日志如下:

INFO: myApp was successfully deployed in 21,635 milliseconds.
SEVERE: Error Rendering View[/login.xhtml]
javax.faces.FacesException: java.lang.ClassCastException: java.lang.String cannot be cast to javax.faces.component.UIComponent
    at com.sun.faces.application.ApplicationImpl.createComponentApplyAnnotations(ApplicationImpl.java:1923)

我该如何解决这个问题??

【问题讨论】:

    标签: jakarta-ee spring-mvc jsf-2 glassfish richfaces


    【解决方案1】:

    java.lang.IllegalStateException:在呈现响应后非法尝试设置 ViewHandler。

    这是在 JSF 2.x 环境中使用面向 JSF 1.2 的组件库时的典型错误消息。 RichFaces 3.3.x 是为 JSF 1.2 设计的,但 Glassfish 3.1 附带 JSF 2.1 而不是 Glassfish 2.1 中的 JSF 1.2。在 JSF 2 中,视图处理领域发生了很多变化,因为 JSP 已被弃用并被 Facelets 取代。

    RichFaces 有一个很好的指导如何在 JSF 2 环境中安装和配置 RichFaces 3.3.3:RichFaces 3.3.3 and JSF 2.0。解决此特定异常的关键步骤是添加以下禁用 JSF 2 Facelets 视图处理程序的上下文参数:

    <context-param>
         <param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name>
         <param-value>true</param-value>
    </context-param>
    

    但还需要执行更多步骤。仔细阅读指南。

    【讨论】:

    • 非常感谢您的帮助。我已按照说明进行操作,但仍然出现错误,您可以看看编辑吗?
    • 这是一个不同的问题。当您错误地使用 binding 属性而不是组件的 value 属性将值绑定到支持 bean 时,可能会发生这种情况。请针对不同的例外提出单独的问题。
    【解决方案2】:

    我必须先从我的应用程序中删除 Ajax4jsf 库,然后才能让这个错误消失。显然,Ajax4jsf 库与 JSF 2.0 不兼容。

    在这里我找到了这个。
    Migrating JSF 1.1 with Ajax4jsf-1.x to JSF2

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2012-09-23
      相关资源
      最近更新 更多