【问题标题】:java.lang.ClassCastException: com.sun.faces.facelets.compiler.UIInstructions cannot be cast to org.primefaces.model.menu.MenuElementjava.lang.ClassCastException:com.sun.faces.facelets.compiler.UIInstructions 不能转换为 org.primefaces.model.menu.MenuElement
【发布时间】:2023-03-06 05:19:01
【问题描述】:

今天早上我来到我的办公室,我看到的第一件事是:我的公司网站崩溃了。因为我想。

现在我尝试了一个半小时来解决这个问题,但我什么也没找到,每个人都失去了理智,因为该网站无法运行,我无法修复它(我一个人。该网站的创建者不在或在假期)。所以我希望你能帮助我!

当我调用我网站的 dashboard.xhtml 时,我得到了这个异常。

java.lang.ClassCastException: com.sun.faces.facelets.compiler.UIInstructions cannot be cast to org.primefaces.model.menu.MenuElement

我的问题是:在整个异常中,没有一个文件是我自己完成的。所以我真的不知道我的错误到底在哪里。

你能帮帮我吗?

以下是一些附加信息:

整个例外:

SEVERE: Error Rendering View[/WEB-INF/flows/dashboard/dashboard.xhtml]
java.lang.ClassCastException: com.sun.faces.facelets.compiler.UIInstructions cannot be cast to org.primefaces.model.menu.MenuElement
at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeElements(TieredMenuRenderer.java:97)
at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeSubmenu(TieredMenuRenderer.java:162)
at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeElements(TieredMenuRenderer.java:119)
at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeMenu(TieredMenuRenderer.java:78)
at org.primefaces.component.menubar.MenubarRenderer.encodeMarkup(MenubarRenderer.java:49)
at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1786)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1779)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1782)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at org.springframework.faces.webflow.FlowViewHandler.renderView(FlowViewHandler.java:99)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at org.springframework.faces.webflow.FlowLifecycle.render(FlowLifecycle.java:80)
at org.springframework.faces.webflow.JsfView.render(JsfView.java:89)
at org.springframework.webflow.engine.ViewState.render(ViewState.java:296)
at org.springframework.webflow.engine.ViewState.refresh(ViewState.java:243)
at org.springframework.webflow.engine.ViewState.resume(ViewState.java:221)
at org.springframework.webflow.engine.Flow.resume(Flow.java:545)
at org.springframework.webflow.engine.impl.FlowExecutionImpl.resume(FlowExecutionImpl.java:258)
at org.springframework.webflow.executor.FlowExecutorImpl.resumeExecution(FlowExecutorImpl.java:169)
at org.springframework.webflow.mvc.servlet.FlowHandlerAdapter.handle(FlowHandlerAdapter.java:183)
at org.springframework.faces.webflow.JsfFlowHandlerAdapter.handle(JsfFlowHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

整个仪表盘文件:

<!DOCTYPE composition 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:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core" template="../../layouts/100.xhtml">

    <ui:define name="heading">
        <h:outputText value="Dashboard" />
    </ui:define>

    <ui:define name="caption">
        <p>List of all your configurations and enabled containers.</p>
    </ui:define>

    <ui:define name="main">
        <div id="main">

            <div class="page_margins">
                <div class="page">
                    <h:form id="form">
                        <p:panel header="Meine Projekte" rendered="#{personManagementBean.loggedIn}">

                            <p:growl id="msgs" showDetail="true" />

                            <p:dataTable id="ownerProjects" var="p" value="#{projectManagementBean.ownerProjects}" tableStyle="width:100%" emptyMessage="Keine Projekte vorhanden">

                                <p:column headerText="Projektk&uuml;rzel" style="width:100px">
                                    <h:outputText value="#{p.projectId}" />
                                </p:column>

                                <p:column headerText="Dom&auml;ne" style="width:80px">
                                    <h:outputText value="#{p.domain}" />
                                </p:column>
                                <p:column headerText="Sub-Dom&auml;ne" style="width:80px">
                                    <h:outputText value="#{p.subDomain}" />
                                </p:column>

                                <p:column headerText="Beschreibung">
                                    <h:outputText value="#{p.description}" />
                                </p:column>

                                <p:column style="width:40px">
                                    <p:panelGrid columns="2" styleClass="no-column-borders" cellpadding="2">
                                        <p:commandButton id="selectButton" update=":form:display" oncomplete="projectDialog.show()" icon="ui-icon-search" title="Anzeigen"
                                            actionListener="#{projectManagementBean.loadProject(p.projectId)}">
                                        </p:commandButton>
                                        <p:commandButton id="editButton" update=":form:display" icon="ui-icon-pencil" title="Anpassen" oncomplete="editProjectDialog.show()"
                                            actionListener="#{projectManagementBean.loadProject(p.projectId)}">
                                        </p:commandButton>
                                    </p:panelGrid>
                                </p:column>
                            </p:dataTable>

                        </p:panel>

                        <p:panel header="Meine Entwicklungsprojekte" rendered="#{personManagementBean.loggedIn}" style="margin-top:10px">

                            <p:dataTable id="developperProjects" var="p" value="#{projectManagementBean.developperProjects}" rendered="#{personManagementBean.loggedIn}" tableStyle="width:100%"
                                emptyMessage="Keine Projekte vorhanden">

                                <p:column headerText="Projektk&uuml;rzel" style="width:100px">
                                    <h:outputText value="#{p.projectId}" />
                                </p:column>

                                <p:column headerText="Dom&auml;ne" style="width:80px">
                                    <h:outputText value="#{p.domain}" />
                                </p:column>
                                <p:column headerText="Sub-Dom&auml;ne" style="width:80px">
                                    <h:outputText value="#{p.subDomain}" />
                                </p:column>

                                <p:column headerText="Beschreibung">
                                    <h:outputText value="#{p.description}" />
                                </p:column>

                                <p:column style="width:40px">
                                    <p:panelGrid columns="3" styleClass="no-column-borders" cellpadding="2">
                                        <p:commandButton id="selectButton" update=":form:display" oncomplete="projectDialog.show()" icon="ui-icon-search" title="Anzeigen"
                                            actionListener="#{projectManagementBean.loadProject(p.projectId)}">
                                        </p:commandButton>
                                    </p:panelGrid>
                                </p:column>
                            </p:dataTable>
                        </p:panel>

                        <ui:include src="./project/details.xhtml" />
                        <ui:include src="./project/editdetails.xhtml" />
                    </h:form>
                </div>
            </div>
        </div>
    </ui:define>

</ui:composition>

【问题讨论】:

  • mkyong.com/jsf2/how-to-use-comments-in-jsf-2-0 这里是关于 jsf 中 cmets 的所有可能解决方案
  • 提醒,facelets.SKIP_COMMENTS 已被弃用。正如您在其他答案中看到的那样,您应该使用 javax.faces.FACELETS_SKIP_COMMENTS

标签: jsf primefaces menu classcastexception


【解决方案1】:

错误信息的快速谷歌显示

PanelMenu 的子元素包含 cmets 时无法呈现。 将显示一个 html 警告对话框,上面写着“UI 布局 初始化错误...”并在服务器上引发异常 “java.lang.ClassCastException:com.sun.faces.facelets.compiler.UIInstructions 不能转换为 org.primefaces.model.menu.MenuElement"。

【讨论】:

  • 你从哪里得到的?因为第二个,“将显示一个 html 警报对话框”不是真的
【解决方案2】:

只需将此添加到您的web.xml

<context-param>
   <param-name>facelets.SKIP_COMMENTS</param-name>
   <param-value>true</param-value>
</context-param>

它会在渲染时跳过JSF 中的 cmets。

【讨论】:

  • 令人惊讶,不直观,但这正是导致此类问题的原因!
  • 请提醒,此上下文参数已弃用。 XML 节点和值仍然是正确的。
【解决方案3】:

只需将其添加到您的 web.xml:

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

它会在渲染时跳过 JSF 中的 cmets。

从 JSF1025 开始,facelets.SKIP_COMMENTS 一直是 deprecated

【讨论】:

  • 您好,您的回答与Michaelthis answer 的回答相同,除非他说facelets.SKIP_COMMENTS 你有javax.faces.FACELETS_SKIP_COMMENTS。你能解释一下为什么你的答案和他的不一样吗?
  • 您想知道为什么这个版本更好... > 上下文初始化参数“facelets.SKIP_COMMENTS” > 已弃用。该选项仍将被配置,但以后请使用 > 'javax.faces.FACELETS_SKIP_COMMENTS'。从 Wildfly 10.x 上的异​​常 JSF1025 开始
【解决方案4】:

请尝试设置以下内容:

<context-param>  
    <param-name>primefaces.THEME</param-name>  
    <param-value>blitzer</param-value>  
</context-param>

【讨论】:

  • 我猜你的解决方案奏效了。我使用不同的 PrimeFaces 主题(引导程序和购买的亚特兰蒂斯),但都没有解决问题。然而,upper 参数确实如此。
猜你喜欢
  • 2016-05-01
  • 2018-03-21
  • 2018-02-10
  • 2023-03-22
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多