我正在将 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>
这是什么意思?