我的Java EE web應用程序在Glassfish 2.1中正常工作。現在我想遷移到GlassFish 3.1.1,但戰爭文件的成功部署後,它提供了以下錯誤:java.lang.IllegalStateException:在呈現響應後非法嘗試設置ViewHandler
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編譯。
這個問題是怎麼引起的?我該如何解決?
編輯
我遵循了RichFaces的提供here
我依賴的修改如下: -
<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 dded方面PARAM如下: -
<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">
我在臉上,配置情況如下: -
<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)
我怎樣才能解決這個?
非常感謝您的幫助。我已按照說明進行操作,但仍然出現錯誤,請參閱編輯? – 2012-01-13 06:58:48
這是一個不同的問題。如果您錯誤地使用'binding'屬性而不是組件的'value'屬性將值綁定到輔助bean,就會發生這種情況。請另外提問一個不同的例外情況。 – BalusC 2012-01-13 12:30:58