jsf-2 - Rich:Editor - com.sun.faces.application.view.StateHolderSaver 无法转换为 [Ljava.lang.Object;
问题描述
我面临一个令人讨厌的问题,我希望有人可以帮助我。
我正在使用JSF 2.0、Mojarra 2.0.9和RichFaces 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)
解决方案
推荐阅读
- reactjs - react 组件编译失败
- php - 使用未定义的常量项目 - 假定为“项目”(这将在 PHP 的未来版本中引发错误)
- javascript - React hook 相当于设置状态后的回调函数
- python - 如何在 Python 中将此嵌套字典加载到 ElasticSearch 中?
- python - 如何在 python 中使用 pandas 打开 xltx 和 xltx 文件?
- javascript - 当用户删除反应时是否有事件?
- java - 问答节目
- azure - 允许来自整个虚拟网络的流量的存储帐户 ARM 模板
- javascript - Css滚动捕捉不起作用
- javascript - 带有 HTML 画布矩形的硬币翻转动画