1
从primefaces dataTable创建复合组件时出现以下错误。我究竟做错了什么 !?'组件不支持事件'在创建p:dataTable复合组件时出错
Exception
javax.faces.view.facelets.TagException: /view/restrito/basico/municipio.xhtml @77,165 <p:ajax> Composite component does not support event rowSelect
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: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>
使用复合组件/于山岛Øcomponente
<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="rowSelect" listener="#{municipioMB.onRowSelect}" update="@(form[id*='frm-municipio']),@(form[id*='tabela-municipio'])" />
<p:ajax event="rowUnselect" 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>
</h:form>
我得到了这个异常/ Ocorreu estaexceção!对于servlet,Faces Servlet引发异常 java.lang.IllegalArgumentException –
因此,这是您的初始问题(您所遇到的错误已消失)的答案。新问题需要提出新问题,但当然要先从您的方面进行调查。请接受答案 – Kukeltje
你是对的!谢谢 ! –