2

我正在将 JSF 1.2 升级到 JSF 2.x。在这个过程中,我想一个一个地升级应用程序中的每一页。我已经设置了每个依赖项和配置。RichFaces 4.x 和 PrimeFaces 3.5 等所有组件库都运行正常。在尝试转换其中一页时,我遇到了以下错误。

javax.el.ELException: Cannot convert bottom-left of type class java.lang.String to class org.richfaces.component.Positioning
at org.apache.el.lang.ELSupport.coerceToEnum(ELSupport.java:182)
at org.apache.el.lang.ELSupport.coerceToType(ELSupport.java:405)
at org.apache.el.ExpressionFactoryImpl.coerceToType(ExpressionFactoryImpl.java:47)
at com.sun.faces.facelets.tag.BeanPropertyTagRule$LiteralPropertyMetadata.applyMetadata(BeanPropertyTagRule.java:88)
at com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81)
at javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129)
at javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102)
at org.richfaces.view.facelets.html.BehaviorsAddingComponentHandlerWrapper.setAttributes(BehaviorsAddingComponentHandlerWrapper.java:113)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:412)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:175)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
at org.richfaces.view.facelets.html.BehaviorsAddingComponentHandlerWrapper.applyNextHandler(BehaviorsAddingComponentHandlerWrapper.java:53)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:190)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
at org.richfaces.view.facelets.html.BehaviorsAddingComponentHandlerWrapper.applyNextHandler(BehaviorsAddingComponentHandlerWrapper.java:53)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:190)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
at javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137)
at org.richfaces.view.facelets.html.BehaviorsAddingComponentHandlerWrapper.applyNextHandler(BehaviorsAddingComponentHandlerWrapper.java:53)
at com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:190)
at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
at com.sun.faces.facelets.tag.jsf.core.ViewHandler.apply(ViewHandler.java:210)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:189)
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87)
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:312)
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:371)
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:350)
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
at com.sun.faces.facelets.tag.ui.IncludeHandler.apply(IncludeHandler.java:120)
at com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:106)
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:201)
at com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395)
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366)
at com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:111)
at javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95)
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87)
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:312)
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:371)
at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:350)
at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:169)
at com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93)
at com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87)
at com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:161)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:980)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
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:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
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:1001)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source).

以下是页面内容:

<f:view locale="#{topPage.locale}">
<f:loadBundle var="general" basename="messages.GeneralResources" />
    <h:form id="topPageForm" styleClass="form" >
        <rich:toolbar itemSeparator="none" height="50px" switchType="ajax" style="background:none; border-color:#C4C8D0" >
            <rich:toolbarGroup id="mainPage1" itemSeparator="grid" location="left" switchType="client" >
                <a4j:outputPanel ajaxRendered="true" id="imgAjaxPanel">
                    <a4j:mediaOutput element="img" mimeType="#{file.mime}" title="#{general.returnToMainPage}"
                        createContent="#{topPage.paint}" style="width:180px; height:45px;" id="companyImg" />
                </a4j:outputPanel>
                <f:ajax listener="#{topPage.mainPageSelected}" event="itemclick" render="mainPage"/>
            </rich:toolbarGroup>
            <rich:toolbarGroup id="mainPage2" itemSeparator="line" location="left" switchType="ajax">
                <rich:dropDownMenu id="dd1" onmouseover="this.style.backgroundColor='#2E2E2E'" onmouseout="this.style.backgroundColor='#5B5F64'" 
                    style="border-color:#5B5F64;" hideDelay="50">
                    <f:facet name="label">
                        <h:panelGrid columns="3">
                            <h:graphicImage value="/images/iconSet/home.png" styleClass="pic" width="25" height="25" />
                            <h:outputText id="id1" value="#{general.mainFunctions}" styleClass="outText"/>
                        </h:panelGrid>
                    </f:facet>
                </rich:dropDownMenu>
                <f:ajax listener="#{topPage.mainPageSelected}" event="itemclick" />
            </rich:toolbarGroup>
            <rich:toolbarGroup itemSeparator="line" location="left" switchType="client">
                <rich:dropDownMenu onmouseover="this.style.backgroundColor='#2E2E2E'" onmouseout="this.style.backgroundColor='#5B5F64'" 
                    style="border-color:#5B5F64;" hideDelay="50">
                    <f:facet name="label">
                        <h:panelGrid columns="3">
                            <h:graphicImage value="/images/iconSet/nav.png" styleClass="pic" width="25" height="25" />
                            <h:outputText value="#{general.workingDurationsLabel} / #{general.trip}" styleClass="outText"/>
                        </h:panelGrid>
                    </f:facet>
                    <rich:menuItem submitMode="ajax" value="#{general.workingDuration}" action="#{topPage.workingDurationsPageSelected}" >
                        <f:facet name="icon" >
                            <h:graphicImage value="/images/icons/scavenger-icon.png" styleClass="pic" width="20" height="20"/>
                        </f:facet>
                    </rich:menuItem>
                    <rich:menuItem submitMode="ajax" value="#{general.trips}" action="#{topPage.tripsPageSelected}">
                        <f:facet name="icon" >
                            <h:graphicImage value="/images/icons/cabriolet-icon.png" styleClass="pic" width="20" height="20"/>
                        </f:facet>
                    </rich:menuItem>
                    <rich:menuItem submitMode="ajax" value="#{general.pastEvents}" action="#{topPage.pastEventsPageSelected}">
                        <f:facet name="icon" >
                            <h:graphicImage value="/images/iconSet/empty-calendar-green.png" styleClass="pic" width="20" height="20"/>
                        </f:facet>
                    </rich:menuItem>
                </rich:dropDownMenu>
            </rich:toolbarGroup>
            <rich:toolbarGroup itemSeparator="line" location="left" switchType="client" >
                <rich:dropDownMenu direction="bottom-left" onmouseover="this.style.backgroundColor='#2E2E2E'" onmouseout="this.style.backgroundColor='#5B5F64'" 
                    style="border-color:#5B5F64;" hideDelay="50">
                    <f:facet name="label">
                        <h:panelGrid columns="3">
                            <h:graphicImage value="/images/iconSet/maintenance-icon.png" styleClass="pic" width="25" height="25"/>
                            <h:outputText value="#{general.maintenance}" styleClass="outText"/>
                        </h:panelGrid>
                    </f:facet>
                    <rich:menuItem submitMode="ajax" value="#{general.queryMaintenance}" action="#{topPage.maintenancePageSelected}" 
                        icon="/images/iconSet/query.png" />
                    <rich:menuItem submitMode="ajax" value="#{general.enterMaintenance}" action="#{topPage.enterMaintenancePageSelected}" 
                        icon="/images/iconSet/forms.png" />
                </rich:dropDownMenu>
            </rich:toolbarGroup>
            <rich:toolbarGroup itemSeparator="line" location="left" switchType="client">
                <rich:dropDownMenu direction="bottom-left" onmouseover="this.style.backgroundColor='#2E2E2E'" onmouseout="this.style.backgroundColor='#5B5F64'" 
                    style="border-color:#5B5F64;" hideDelay="50">
                    <f:facet name="label">
                        <h:panelGrid columns="3">
                            <h:graphicImage value="/images/iconSet/areas.png" styleClass="pic" width="25" height="25"/>
                            <h:outputText value="#{general.pointsAreas}" styleClass="outText"/>
                        </h:panelGrid>
                    </f:facet>
                    <rich:menuItem submitMode="ajax" value="#{general.defineCustomerPoints}" action="#{topPage.defineCustomerPointsSelected}" 
                        icon="/images/iconSet/point.png" />
                    <rich:menuItem submitMode="ajax" value="#{general.defineCustomerAreas}" 
                        icon="/images/iconSet/area.png" />
                    <rich:menuItem submitMode="ajax" value="#{general.pointVehicleAssociations}" />
                    <rich:menuItem submitMode="ajax" value="#{general.areaVehicleAssociations}" />
                </rich:dropDownMenu>
            </rich:toolbarGroup>
            <rich:toolbarGroup itemSeparator="line" location="left" switchType="client">
                <rich:dropDownMenu direction="bottom-left" onmouseover="this.style.backgroundColor='#2E2E2E'" onmouseout="this.style.backgroundColor='#5B5F64'" 
                    style="border-color:#5B5F64;" hideDelay="50">
                    <f:facet name="label">
                        <h:panelGrid columns="3">
                            <h:graphicImage value="/images/iconSet/settings.png" styleClass="pic" width="25" height="25"/>
                            <h:outputText value="#{general.management}" styleClass="outText"/>
                        </h:panelGrid>
                    </f:facet>
                    <rich:menuItem submitMode="ajax" value="#{general.defineVehicle}" action="#{topPage.defineVehiclePageSelected}" 
                        icon="/images/iconSet/vehicle.png"/>
                    <rich:menuItem submitMode="ajax" value="#{general.defineVehicleType}" action="#{topPage.defineVehicleTypePageSelected}" 
                        icon="/images/iconSet/vehicle-type.png"/>
                    <rich:menuItem submitMode="ajax" value="#{general.defineCanTable}" action="#{topPage.defineCanDefinitionsSelected}" rendered="#{menu.systemAdmin}" 
                        icon="/images/iconSet/can-bus.png"/>
                    <rich:menuItem submitMode="ajax" value="#{general.defineDriver}" action="#{topPage.defineDriverPageSelected}" 
                        icon="/images/iconSet/driver.png"/>
                    <rich:menuItem submitMode="ajax" value="#{general.defineCompany}" action="#{topPage.defineCompanyPageSelected}" rendered="#{menu.systemAdmin}"
                        icon="/images/iconSet/company.png"/>
                    <rich:menuItem submitMode="ajax" value="#{general.defineUser}" action="#{topPage.defineUserPageSelected}" 
                        icon="/images/iconSet/user.png"/>
                    <rich:menuItem submitMode="ajax" value="#{general.defineGroups}" action="#{topPage.defineGroupsPageSelected}" 
                        icon="/images/iconSet/list-icon.png"/>
                </rich:dropDownMenu>
            </rich:toolbarGroup>

            <rich:toolbarGroup itemSeparator="line" location="left" switchType="client">
                <rich:dropDownMenu onmouseover="this.style.backgroundColor='#2E2E2E'" onmouseout="this.style.backgroundColor='#5B5F64'" 
                    style="border-color:#5B5F64;" hideDelay="50">
                    <f:facet name="label">
                        <h:panelGrid columns="3">
                            <h:graphicImage value="/images/iconSet/report-icon.png" styleClass="pic" width="25" height="25" />
                            <h:outputText value="#{general.reports}" styleClass="outText"/>
                        </h:panelGrid>
                    </f:facet>
                </rich:dropDownMenu>
                <f:ajax listener="#{topPage.reportsPageSelected}" event="onitemclick" />
            </rich:toolbarGroup>

            <rich:toolbarGroup itemSeparator="line" location="left" switchType="client">
                <rich:dropDownMenu  onmouseover="this.style.backgroundColor='#2E2E2E'" onmouseout="this.style.backgroundColor='#5B5F64'" 
                    style="border-color:#5B5F64;" hideDelay="50">
                    <f:facet name="label">
                        <h:panelGrid columns="3">
                            <h:graphicImage value="/images/iconSet/other-icon.png" styleClass="pic" width="25" height="25" />
                            <h:outputText value="#{general.other}" styleClass="outText"/>
                        </h:panelGrid>
                    </f:facet>
                    <rich:menuGroup  value="#{general.sensors}" icon="/images/iconSet/letter-s-blue-icon.png" width="25" height="25">
                        <rich:menuItem event="onitemclick" submitMode="ajax" value="#{general.seatSensors}" action="#{topPage.seatSensorsPageSelected}"  
                            icon="/images/iconSet/seat-sensors.png"/>
                        <rich:menuItem event="onitemclick" submitMode="ajax" value="#{general.fuelSensors}"  icon="/images/iconSet/fuel-gauge.png"/>
                        <rich:menuItem event="onitemclick" submitMode="ajax" value="#{general.doorSensors}" icon="/images/iconSet/door-icon.png"/>
                        <rich:menuItem event="onitemclick" submitMode="ajax" value="#{general.nemSensors}" icon="/images/iconSet/nem-icon.gif"/>
                    </rich:menuGroup>
                    <rich:menuItem event="onitemclick" submitMode="ajax" value="#{general.aset}" action="#{topPage.asetPageSelected}" disabled="true"
                        icon="/images/iconSet/letter-a-icon.png"/>
                    <rich:menuItem event="onitemclick" submitMode="ajax" value="#{general.marketFreezer}" action="#{topPage.freezerPageSelected}"
                        icon="/images/icons/freezer.png"/>
                </rich:dropDownMenu>
            </rich:toolbarGroup>

            <rich:toolbarGroup itemSeparator="line" location="right" switchType="client">
                <a4j:commandLink action="#{topPage.alarmPageSelected}" event="onitemclick">
                    <h:graphicImage value="#{topPage.alarmIcon}" width="25" height="25"  title="#{general.alarmNotification}"/>
                </a4j:commandLink>
            </rich:toolbarGroup>

            <rich:toolbarGroup location="right" switchType="client" >
                <h:outputText value="#{mainPage.fullName}" styleClass="coloredText1"  title="#{general.username}"/>
            </rich:toolbarGroup>

            <rich:toolbarGroup itemSeparator="line" location="right" switchType="client" >
                <h:graphicImage value="/images/logout.png" title="#{general.logout}" height="25" width="25" >
                    <f:ajax listener="#{userInfo.logout}" event="onclick"/>
                </h:graphicImage>
            </rich:toolbarGroup>
        </rich:toolbar>
    </h:form>
</f:view>

这是什么意思?

4

1 回答 1

3

使用“bottomLeft”而不是“bottom-left” 在richfaces 4 中,“bottom-left”定位不再有效。相同的模式适用于其他选项,如“bottomRight”、“topRight”、“topLeft”

于 2014-04-10T06:21:54.247 回答