首页 > 解决方案 > Rich:Editor - com.sun.faces.application.view.StateHolderSaver 无法转换为 [Ljava.lang.Object;

问题描述

我面临一个令人讨厌的问题,我希望有人可以帮助我。
我正在使用JSF 2.0Mojarra 2.0.9RichFaces 4.3.0_final
尝试将Rich Faces 编辑器添加到 jspf 页面中,但是当页面加载时出现以下错误。
如果我刷新浏览器页面,则会显示编辑器。

这是导致错误的我的jspf 页面(“myEditorValue”是 java.lang.String):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:richext="http://java.sun.com/jsf/composite/richext"
    xmlns:t="http://myfaces.apache.org/tomahawk"
    xmlns:c="http://java.sun.com/jsp/jstl/core">
    
    <script>window.CKEDITOR_BASEPATH='#{request.contextPath}/org.richfaces.resources/javax.faces.resource/org.richfaces.ckeditor/';</script>    
    
    <h:panelGrid id="myPanel-main" rendered="#{myBean.rendered}" style="width: 100%;">
       
       <h:form id="myPanel-form">
            <rich:collapsiblePanel id="myPanel-loadCollapse" rendered="#{not myBean.loadDone}" header="My Header" style="width:100%;">
                <h:graphicImage id="myPanel-loading" value="#{user.layout.ajaxLoadingBar}" style="text-align:center;" />
            </rich:collapsiblePanel>
            
            <h:panelGroup id="myPanel-data" rendered="#{myBean.loadDone}" layout="block">
               
               <c:forEach var="proposal" items="#{myBean.clientHistoryKeySet}">
               
                   <rich:collapsiblePanel id="myPanel-loadDone" style="width:100%;" rendered="#{not empty myBean.clientHistory[proposal]}"
                                          header="Header - #{proposal.id} - (#{proposal.stateproposal})" expanded="#{myBean.expandedSection}"
                                          headerClass= "#{myBean.selectedProp == proposal.id ? myBean.highlightHeader : ''}">
               
                   <h:panelGrid id="myPanel-history" columns="8" style="width: 100%;text-align:center;">
                        <h:panelGroup style="float:center">
                          <h:outputText value="#{user.message.MSG_ID_1" style="text-align:center;font-size:120%" class = "headerField"></h:outputText>
                        </h:panelGroup>
                                <h:panelGroup style="float:center">
                          <h:outputText value="#{user.message.MSG_ID_2}" style="text-align:center;font-size:120%" class = "headerField"></h:outputText>
                        </h:panelGroup>
                        <h:panelGroup style="float:center">
                          <h:outputText value="#{user.message.MSG_ID_3}" style="text-align:center;font-size:120%" class = "headerField"></h:outputText>
                        </h:panelGroup>
                        <h:panelGroup style="float:center">
                          <h:outputText value="#{user.message.MSG_ID_4}" style="text-align:center;font-size:120%" class = "headerField"></h:outputText>
                        </h:panelGroup>
                        <h:panelGroup style="float:center">
                          <h:outputText value="#{user.message.MSG_ID_5}" style="text-align:center;font-size:120%" class = "headerField"></h:outputText>
                        </h:panelGroup>
                        <h:panelGroup style="float:center">
                          <h:outputText value="#{user.message.MSG_ID_6}" style="text-align:center;font-size:120%" class = "headerField"></h:outputText>
                        </h:panelGroup>
                        <h:panelGroup style="float:center">
                          <h:outputText value="#{user.message.MSG_ID_7}" style="text-align:center;font-size:120%" class = "headerField"></h:outputText>
                        </h:panelGroup>
                        <h:panelGroup style="float:center">
                          <h:outputText value="#{user.message.MSG_ID_8}" style="text-align:center;font-size:120%" class = "headerField"></h:outputText>
                        </h:panelGroup>
                        
                        <c:forEach var="dat" items="#{myBean.clientHistory[proposal]}">
                            
                           <h:panelGroup style="float:center">
                               <h:graphicImage url= "#{dat.pathColor}" width="45%" height="45%" />
                            </h:panelGroup>
                           <h:panelGroup style="float:center">
                              <h:outputText value="#{dat.date1}" style="text-align:center;font-size:120%;"></h:outputText>
                           </h:panelGroup>
                           <h:panelGroup style="float:center">
                            <h:outputText value="#{dat.amount1}" style="text-align:center;font-size:120%;"></h:outputText>
                           </h:panelGroup>
                           <h:panelGroup style="float:center">
                            <h:outputText value="#{dat.date2}" style="text-align:center;font-size:120%;"></h:outputText>
                           </h:panelGroup>
                           <h:panelGroup style="float:center">
                               <h:outputText value="#{dat.date3}" style="text-align:center;font-size:120%;"> </h:outputText>     
                            </h:panelGroup>
                           <h:panelGroup style="float:center">
                              <h:outputText value="#{dat.amount2}" style="text-align:center;font-size:120%;"></h:outputText>
                           </h:panelGroup>
                           <h:panelGroup style="float:center">
                            <h:outputText value="#{dat.figure}" style="text-align:center;font-size:120%;"></h:outputText>
                           </h:panelGroup>
                           <h:panelGroup style="float:center">
                            <h:outputText value="#{dat.user}" style="text-align:center;font-size:120%;"></h:outputText>
                           </h:panelGroup>
                           
                        </c:forEach>
                        
                    </h:panelGrid>
                    
                    <c:forEach var="dat" items="#{myBean.clientHistory[proposal]}">
                            
                        <rich:collapsiblePanel id="myPanel-Editor" rendered="true" switchType="client" 
                            header="Editor Commerciale" style="width:100%;" expanded="false">
                            <h:panelGroup id="myPanel-SaveEditor">
                                <a4j:commandLink action="#{dat.saveEditor}" style="margin-left:10px;text-decoration:none;"
                                    onclick="this.style.display='none'" type="button" render="@this myPanel-SaveEditor" status="myPanel-SavingEditor">
                                    <h:graphicImage value="/images/salva.gif"/>
                                    <h:outputText value="Salva" 
                                    style="margin-left:10px;font-size:14px;line-height: 20px;color:#274449;font-weight:bold;vertical-align:bottom;" />
                                </a4j:commandLink>
                                <a4j:status name="myPanel-SavingEditor">
                                    <f:facet name="start">
                                        <h:graphicImage value="#{user.layout.ajaxLoadingBar}" style="z-index:1000;"/>
                                    </f:facet>
                                </a4j:status>
                                <h:graphicImage rendered="#{dat.editorSaved}" style="margin-left:15px;" value="/images/imm_ok.gif"/>
                            </h:panelGroup>
                            <br /><br />
                            <rich:editor id="myEditor" value="#{dat.myEditorValue}" />
                        </rich:collapsiblePanel>

                    </c:forEach>
                
                 </rich:collapsiblePanel>
    
               </c:forEach>
               
          </h:panelGroup>
       
       </h:form>
       
       <a4j:jsFunction name="loadmyPanel" actionListener="#{myBean.load}" render="myPanel-form" execute="@this" immediate="true" />   
       <script type="text/javascript">loadmyPanel();</script>
    
    </h:panelGrid>
    
</ui:composition>

堆栈跟踪:

javax.faces.FacesException: Unexpected error restoring state for component with id javax_faces_location_BODY.  Cause: java.lang.ClassCastException: com.sun.faces.application.view.StateHolderSaver cannot be cast to [Ljava.lang.Object;.
    at com.sun.faces.application.view.StateManagementStrategyImpl$1.visit(StateManagementStrategyImpl.java:273)
    at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1507)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1518)
    at com.sun.faces.component.visit.VisitUtils.doFullNonIteratingVisit(VisitUtils.java:75)
    at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:257)
    at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:181)
    at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:448)
    at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148)
    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:187)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:111)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at it.uniteam.timeojsf.util.ApplicationSessionExpiryFilter.doFilter(ApplicationSessionExpiryFilter.java:117)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassCastException: com.sun.faces.application.view.StateHolderSaver cannot be cast to [Ljava.lang.Object;
    at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1427)
    at com.sun.faces.application.view.StateManagementStrategyImpl$1.visit(StateManagementStrategyImpl.java:265)
    ... 41 more
javax.faces.FacesException: Unexpected error restoring state for component with id javax_faces_location_BODY.  Cause: java.lang.ClassCastException: com.sun.faces.application.view.StateHolderSaver cannot be cast to [Ljava.lang.Object;.
    at com.sun.faces.application.view.StateManagementStrategyImpl$1.visit(StateManagementStrategyImpl.java:273)
    at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1507)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1518)
    at com.sun.faces.component.visit.VisitUtils.doFullNonIteratingVisit(VisitUtils.java:75)
    at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:257)
    at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:181)
    at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:448)
    at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148)
    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:187)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:111)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at it.uniteam.timeojsf.util.ApplicationSessionExpiryFilter.doFilter(ApplicationSessionExpiryFilter.java:117)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassCastException: com.sun.faces.application.view.StateHolderSaver cannot be cast to [Ljava.lang.Object;
    at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1427)
    at com.sun.faces.application.view.StateManagementStrategyImpl$1.visit(StateManagementStrategyImpl.java:265)
    ... 41 more
giu 24, 2020 8:19:39 AM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/myApplication] threw exception [com.sun.faces.application.view.StateHolderSaver cannot be cast to [Ljava.lang.Object;] with root cause
java.lang.ClassCastException: com.sun.faces.application.view.StateHolderSaver cannot be cast to [Ljava.lang.Object;
    at javax.faces.component.UIComponentBase.restoreState(UIComponentBase.java:1427)
    at com.sun.faces.application.view.StateManagementStrategyImpl$1.visit(StateManagementStrategyImpl.java:265)
    at com.sun.faces.component.visit.FullVisitContext.invokeVisitCallback(FullVisitContext.java:151)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1507)
    at javax.faces.component.UIComponent.visitTree(UIComponent.java:1518)
    at com.sun.faces.component.visit.VisitUtils.doFullNonIteratingVisit(VisitUtils.java:75)
    at com.sun.faces.application.view.StateManagementStrategyImpl.restoreView(StateManagementStrategyImpl.java:257)
    at com.sun.faces.application.StateManagerImpl.restoreView(StateManagerImpl.java:181)
    at com.sun.faces.application.view.ViewHandlingStrategy.restoreView(ViewHandlingStrategy.java:123)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.restoreView(FaceletViewHandlingStrategy.java:448)
    at com.sun.faces.application.view.MultiViewHandler.restoreView(MultiViewHandler.java:148)
    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
    at javax.faces.application.ViewHandlerWrapper.restoreView(ViewHandlerWrapper.java:288)
    at com.sun.faces.lifecycle.RestoreViewPhase.execute(RestoreViewPhase.java:187)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.RestoreViewPhase.doPhase(RestoreViewPhase.java:111)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:508)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at it.uniteam.timeojsf.util.ApplicationSessionExpiryFilter.doFilter(ApplicationSessionExpiryFilter.java:117)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.lang.Thread.run(Thread.java:748)

标签: jsf-2ckeditoreditorrichfaces

解决方案


推荐阅读