带有primefaces dataTable的java.lang.IllegalArgumentException jsf复合组件

带有primefaces dataTable的java.lang.IllegalArgumentException jsf复合组件,java,jsf,primefaces,jsf-2,Java,Jsf,Primefaces,Jsf 2,中文:java.lang.IllegalArgumentException jsf复合组件与primefaces dataTable 葡萄牙语:java.lang.IllegalArgumentException组件componente composto jsf com数据表do primefaces tabela-padrao.xhtml <html xmlns="http://www.w3.org/1999/xhtml" xmlns:cc="http://xmlns.jcp.org

中文:java.lang.IllegalArgumentException jsf复合组件与primefaces dataTable 葡萄牙语:java.lang.IllegalArgumentException组件componente composto jsf com数据表do primefaces

tabela-padrao.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:cc="http://xmlns.jcp.org/jsf/composite"
  xmlns:c="http://java.sun.com/jsp/jstl/core"
  xmlns:p="http://primefaces.org/ui"
  xmlns:f="http://xmlns.jcp.org/jsf/core"
  xmlns:h="http://xmlns.jcp.org/jsf/html">

<!-- INTERFACE -->
<cc:interface>
    <cc:attribute name="uniqueId" required="true" />
    <cc:attribute name="value" required="true" />
    <cc:attribute name="var" required="true" />
    <cc:attribute name="selection" required="true" />
    <cc:attribute name="exportedFileName" required="true" />
    <cc:attribute name="renderedTable" default="true"/>
    <cc:attribute name="primaryKey" required="true"/>
    <cc:clientBehavior name="customRowSelectEvent" targets="#{cc.attrs.uniqueId}" event="rowSelect" />
    <cc:clientBehavior name="customRowUnselectEvent" targets="#{cc.attrs.uniqueId}" event="rowUnselect" />
</cc:interface>

<!-- IMPLEMENTATION -->
<cc:implementation>
    <p:dataTable value="#{cc.attrs.value}" 
                 id="#{cc.attrs.uniqueId}"
                 scrollable="true"
                 scrollWidth="100%"
                 var="#{cc.attrs.var}"
                 rendered="#{cc.attrs.renderedTable}"
                 selection="#{cc.attrs.selection}"
                 rowKey="#{cc.attrs.primaryKey}"                                             
                 selectionMode="single"
                 paginator="true"
                 rowsPerPageTemplate="15,30,45"
                 paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown} {Exporters}"
                 emptyMessage="#{bundle.tabela_nenhum_registro_encontrado}">
        <cc:insertChildren/>
        <f:facet name="{Exporters}">
            <h:commandLink style="padding: 5px 5px 5px 5px ;" title="Converter para Excel" >                                            
                <h:outputText  styleClass="fa fa-file-excel-o Fs20"/>
                <p:dataExporter type="xls" target="#{cc.attrs.uniqueId}" fileName="#{cc.attrs.exportedFileName}" />
            </h:commandLink>
            <h:commandLink style="padding: 5px 5px 5px 5px ;" title="Converter para PDF" >
                <h:outputText  styleClass="fa fa-file-pdf-o Fs20"/>
                <p:dataExporter type="pdf" target="#{cc.attrs.uniqueId}" fileName="#{cc.attrs.exportedFileName}"/>
            </h:commandLink>
        </f:facet>
    </p:dataTable> 
</cc:implementation>

使用component/Usando component

<h:form id="tabela-municipio">
<ezcomp:tabela-padrao value="#{municipioMB.listaMunicipios}"
                      uniqueId="id-tabela-municipio"
                      var="mun" 
                      primaryKey="#{mun.id}"
                      selection="#{municipioMB.municipio}"
                      exportedFileName="municipios">
    <p:ajax event="customRowSelectEvent" listener="#{municipioMB.onRowSelect}" update="@(form[id*='frm-municipio']),@(form[id*='tabela-municipio'])" />
    <p:ajax event="customRowUnselectEvent" listener="#{municipioMB.onRowUnselect}" update="@(form[id*='frm-municipio']),@(form[id*='tabela-municipio'])" />
    <p:column headerText="Pais" width="300" filterBy="#{mun.estado.pais.nome}" filterMatchMode="contains">
        <h:outputText value="#{mun.estado.pais.nome}"/>
    </p:column>
    <p:column headerText="Estado" width="300" filterBy="#{mun.estado.sigla} - #{mun.estado.nome}" filterMatchMode="contains">
        <h:outputText value="#{mun.estado.sigla} - #{mun.estado.nome}"/>
    </p:column>
    <p:column headerText="Município" filterBy="#{mun.nome}" filterMatchMode="contains">
        <h:outputText value="#{mun.nome}"/>
    </p:column>
</ezcomp:tabela-padrao>

我得到了这个例外/Ocorreu esta excção

广告:StandardWrapperValve[FacesServlet]:Servlet的Servlet.service()引发异常 java.lang.IllegalArgumentException 位于javax.faces.component.UIData.setValueExpression(UIData.java:804) 在com.sun.faces.facelets.tag.jsf.ComponentRule$ValueExpressionMetadata.applyMetadata(ComponentRule.java:107)上 位于com.sun.faces.facelets.tag.MetadataImpl.applyMetadata(MetadataImpl.java:81) 位于javax.faces.view.facelets.MetaTagHandler.setAttributes(MetaTagHandler.java:129) 位于javax.faces.view.facelets.DelegatingMetaTagHandler.setAttributes(DelegatingMetaTagHandler.java:102) 位于com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.doNewComponentActions(ComponentTagHandlerDelegateImpl.java:491) 位于com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:178) 位于javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 位于com.sun.faces.facelets.tag.composite.ImplementationHandler.apply(ImplementationHandler.java:81) 在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) 位于com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 位于com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87) 位于com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:312) 位于com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:371) 位于com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:326) 位于com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.ApplyCompositeComponentTagHandler(CompositeComponentTagHandler.java:387) 位于com.sun.faces.facelets.tag.jsf.CompositeComponentTagHandler.ApplyNext Handler(CompositeComponentTagHandler.java:188) 位于com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:202) 位于javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 位于javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 位于com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:202) 位于javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) 位于com.sun.faces.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:106) 位于com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:206) 位于com.sun.faces.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:395) 位于com.sun.faces.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:366) 位于com.sun.faces.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:111) 在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) 位于javax.faces.view.facelets.DelegatingMetaTagHandler.applyNextHandler(DelegatingMetaTagHandler.java:137) 位于com.sun.faces.facelets.tag.jsf.ComponentTagHandlerDelegateImpl.apply(ComponentTagHandlerDelegateImpl.java:202) 位于javax.faces.view.facelets.DelegatingMetaTagHandler.apply(DelegatingMetaTagHandler.java:120) 在javax.faces.view.facelets.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:95) 位于com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 位于com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87) 位于com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:312) 位于com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:371) 位于com.sun.faces.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:350) 位于com.sun.faces.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:199) 位于com.sun.faces.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:174) 位于com.sun.faces.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:93) 位于com.sun.faces.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:87) 在com.sun.faces.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:161)上 位于com.sun.faces.application.view.FaceletViewHandlingStrategy.buildView(FaceletViewHandlingStrategy.java:1006) 位于com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:99) 位于com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 在com.sun.faces.lifecycle.LifecycleImpl.render上(LifecycleImpl.java:219) 位于javax.faces.webapp.FacesServlet.service(FacesServlet.java:659) 位于org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) 位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344) 位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 在org.primefaces.webapp.filter.FileUploadFi
public void setValueExpression(String name, ValueExpression binding) {

    if ("value".equals(name)) {
        this.model = null;
    } else if ("var".equals(name) || "rowIndex".equals(name)) {
        throw new IllegalArgumentException();
    }
    super.setValueExpression(name, binding);

}