错误 Omnifaces 2.0 o:massAttribute 和 o:validateOrder

Error Omnifaces 2.0 o:massAttribute with o:validateOrder

您好,当我尝试将 o:massAttribute 与 o:validateOrder 结合使用时,我遇到了这个错误,我看到 o:validateOrder 禁用了该属性,知道是什么导致了这个问题。

我有这个代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:a4j="http://richfaces.org/a4j"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:tablas="http://java.sun.com/jsf/composite/tablas"
    xmlns:o="http://omnifaces.org/ui"
    xmlns:of="http://omnifaces.org/functions"
    xmlns:templates="http://java.sun.com/jsf/composite/templates"
    >

<body>

    <f:metadata>
        <f:event type="preRenderView" listener="#{baseController.iniciarConversacion()}" />
    </f:metadata>

    <ui:composition template="/templates/TemplateABM.xhtml">
        <ui:define name="title">
                #{msgs['facturacion.abm.generacion.factura.individual.pagina.titulo']}
            </ui:define>
        <ui:define name="top">
            <h1>#{msgs['facturacion.abm.generacion.factura.individual.titulo']}</h1>
        </ui:define>
        <ui:define name="content">

            <h:form id="formFacturaIndividual">


            <h:panelGroup id="panelFechas">
                <h:inputHidden id="fechaInicioFactura" value="#{facturaController.fechaInicioFactura}">
                    <f:convertDateTime type="date" pattern="dd/MM/yy"/>
                </h:inputHidden>

                <h:inputHidden id="fechaFinFactura" value="#{facturaController.fechaFinFactura}">
                    <f:convertDateTime type="date" pattern="dd/MM/yy"/>
                </h:inputHidden>            

                <h:inputHidden id="fechaEmisionComprobanteUltima" value="#{comprobanteController.fechaEmisionComprobanteUltima}">
                    <f:convertDateTime type="date" pattern="dd/MM/yy"/>
                </h:inputHidden>            
            </h:panelGroup>

                <o:massAttribute name="disabled" value="#{tipoComprobanteController.entidad == null}">
                    <rich:panel id="panelDatosFactura" header="#{msgs['facturacion.abm.generacion.padron.panel.datos.factura']}">

                        <h:panelGrid id="DatosFactura" columns="3">

                            <h:outputLabel value="#{msgs['facturacion.abm.generacion.padron.fecha.factura']}" for="fechaFactura"/>  
                            <rich:calendar
                                id="fechaFactura"
                                datePattern="dd/MM/yyyy"
                                showWeeksBar="false"
                                enableManualInput="true"
                                value="#{generacionFacturacionIndividualController.facturaBean.fechaFactura}"
                                required="true"
                                requiredMessage="La Fecha de la Factura es Obligatoria" >

                            </rich:calendar>
                            <h:panelGroup>
                                <rich:message for="fechaFactura"/>
                                <o:validateOrder id="validacionFechaFacturaMenorAFechaInicioFactura" type="gte" components="fechaFactura fechaInicioFactura" 
                                message="#{msgs['comun.abm.fecha.factura.menor.limite.dia']}" showMessageFor="fechaFactura" disabled="false" />
                                <o:validateOrder id="validacionFechaFacturaMayorAFechaFinFactura" type="lte" components="fechaFactura fechaFinFactura" 
                                message="#{msgs['comun.abm.fecha.factura.menor.limite.dia']}" showMessageFor="fechaFactura" disabled="false" />                             
                                <o:validateOrder id="validacionFechaFacturaMayorAFechaEmisionUltimoComprobante" type="gte" components="fechaFactura fechaEmisionComprobanteUltima" 
                                message="#{of:format1(msgs['comun.abm.fecha.factura.menor.ultimo.comprobante'], comprobanteController.fechaEmisionComprobanteUltima)}" showMessageFor="fechaFactura" disabled="false" />                                                                                            
                            </h:panelGroup>

                        </h:panelGrid>

                    </rich:panel>
                </o:massAttribute>


            </h:form>

        </ui:define>
    </ui:composition>

</body>
</html>

当 运行 我收到此异常时:

Caused by: java.lang.IllegalArgumentException: disabled
    at javax.faces.component.UIComponentBase$AttributesMap.get(UIComponentBase.java:2347)
    at org.omnifaces.taghandler.MassAttribute.applyMassAttribute(MassAttribute.java:153)
    at org.omnifaces.taghandler.MassAttribute.applyMassAttribute(MassAttribute.java:162)
    at org.omnifaces.taghandler.MassAttribute.applyMassAttribute(MassAttribute.java:162)
    at org.omnifaces.taghandler.MassAttribute.applyMassAttribute(MassAttribute.java:162)
    at org.omnifaces.taghandler.MassAttribute.apply(MassAttribute.java:145)
    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:187)
    at javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.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:178)
    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 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:187)
    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.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:323)
    at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:382)
    at com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:361)
    at com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199)
    at com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:155)
    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:164)
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:914)
    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:139)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
    ... 23 more

如果我删除 o:validateOrder 代码有效

这是由于 isXxx() getter incorrectly 返回 Boolean 而不是 boolean

根据今天的 2.1-SNAPSHOT 修复可用,并将在 2.1 版本中。