Usar f:setPropertyActionListener com p:commandLink

Amigos,

estou tentando exportar um subTable para excel e estou seguindo um exemplo do link http://fractalsoft.net/primeext-showcase-mojarra/sections/exporter/subTable.jsf;jsessionid=j22812skrvo31vttqrhuoy19h

mas não estou entendendo o trecho abaixo

<f:setPropertyActionListener value="false" target="#{exporterController.customExporter}" />

pois não tem o método da linha target="#{exporterController.customExporter}"

alguém pode ajudar ?

customExporter é uma variavel do tipo boolean no managedBean. Deve ter provavelmente só um get e set para ela.

Amigo,

estou tentando exportar o para excel mas estou com o erro abaixo sabe o que pode ser ?

11:06:43,371 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http--127.0.0.1-8089-4) java.lang.IllegalArgumentException: No enum constant org.primefaces.extensions.component.exporter.ExporterFactory.ExporterType.XLSX: javax.faces.FacesException: java.lang.IllegalArgumentException: No enum constant org.primefaces.extensions.component.exporter.ExporterFactory.ExporterType.XLSX
	at org.primefaces.extensions.component.exporter.ExporterFactory.getExporterForType(ExporterFactory.java:56) [primefaces-extensions-0.6.3.jar:0.6.3]
	at org.primefaces.extensions.component.exporter.DataExporter.processAction(DataExporter.java:158) [primefaces-extensions-0.6.3.jar:0.6.3]
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UICommand.broadcast(UICommand.java:300) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_25]
Caused by: java.lang.IllegalArgumentException: No enum constant org.primefaces.extensions.component.exporter.ExporterFactory.ExporterType.XLSX
	at java.lang.Enum.valueOf(Unknown Source) [rt.jar:1.7.0_25]
	at org.primefaces.extensions.component.exporter.ExporterFactory$ExporterType.valueOf(ExporterFactory.java:28) [primefaces-extensions-0.6.3.jar:0.6.3]
	at org.primefaces.extensions.component.exporter.ExporterFactory.getExporterForType(ExporterFactory.java:37) [primefaces-extensions-0.6.3.jar:0.6.3]
	... 24 more

11:06:43,392 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/retaguardaBO121].[Faces Servlet]] (http--127.0.0.1-8089-4) Servlet.service() for servlet Faces Servlet threw exception: java.lang.IllegalArgumentException: No enum constant org.primefaces.extensions.component.exporter.ExporterFactory.ExporterType.XLSX
	at java.lang.Enum.valueOf(Unknown Source) [rt.jar:1.7.0_25]
	at org.primefaces.extensions.component.exporter.ExporterFactory$ExporterType.valueOf(ExporterFactory.java:28) [primefaces-extensions-0.6.3.jar:0.6.3]
	at org.primefaces.extensions.component.exporter.ExporterFactory.getExporterForType(ExporterFactory.java:37) [primefaces-extensions-0.6.3.jar:0.6.3]
	at org.primefaces.extensions.component.exporter.DataExporter.processAction(DataExporter.java:158) [primefaces-extensions-0.6.3.jar:0.6.3]
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UICommand.broadcast(UICommand.java:300) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_25]

A mensagem de erro está claro:

Segue a documentação do método values() desse ExporterType:

[quote]public static ExporterType[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:
for (ExporterType c : ExporterType.values())
System.out.println©;
Returns:
an array containing the constants of this enum type, in the order they are declared[/quote]

Fonte: http://www.primefaces.org/docs/api/3.5/org/primefaces/component/export/ExporterType.html#XLS

Como achei isso? Resposta: Google, primeiro link…

Igor,

pesquisei por Caused by: java.lang.IllegalArgumentException: No enum constant org.primefaces.extensions.component.exporter.ExporterFactory.ExporterType.XLSX e não achei a solução ou pelo menos não entendi em cima das pesquisas que fiz,

li o link que vc postou mas não esta claro como devo resolver meu problema ainda vc pode ajudar ?

a chamada para exportar para o Excel esta conforme abaixo

			<p:commandLink id="xls" ajax="false"  >  
			    <p:graphicImage value="/resources/imagens/excel.png"/>  
			    <pe:exporter type="xlsx" target="idDataTable42" fileName="retornoColecaoDados" isSubTable="true"/>
			</p:commandLink> 

Não entendi em cima do link q vc me passou o que preciso implementar

está “pe”, deve ser “p” a não ser que não seja primefaces

no type, você colocou em formato String (“xlsx”), deve ser no formato ExporterType…
No seu ManagedBean, cria um


public ExporterType getTipoArquivo() {
  return ExporterType.XLS;
}

Aí no seu exporter, no type voce coloca

<p:exporter type="#{seuManagedBean.tipoArquivo}"

PS: Nunca usei isso, e não testei também. Mas acredito que seja isso que deve ser feito

Igor,

estou usando o pe:exporter porque pelo q pesquisei e ele que funciona para exportar quando se usa <p:subTable>,

o <p:dataExporter> se usa quando uso somente um <p:dataTable>

alterei conforme vc falou e esta assim agora

			<p:commandLink id="xls" ajax="false"  >  
			    <p:graphicImage value="/resources/imagens/excel.png"/>  
			    <pe:exporter type="#{relatPaywareContabilMBean.tipoArquivo}" target="idDataTable42" fileName="retornoColecaoDados" isSubTable="true"/>
			</p:commandLink>

No meu Mbean esta assim

	public ExporterType getTipoArquivo() {  
		  return ExporterType.XLS;  
		} 

porém deu o erro abaixo

15:30:23,956 WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (http--127.0.0.1-8089-1) org.primefaces.extensions.component.exporter.ExporterFactory$ExporterType cannot be cast to java.lang.String: java.lang.ClassCastException: org.primefaces.extensions.component.exporter.ExporterFactory$ExporterType cannot be cast to java.lang.String
	at org.primefaces.extensions.component.exporter.DataExporter.processAction(DataExporter.java:106) [primefaces-extensions-0.6.3.jar:0.6.3]
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UICommand.broadcast(UICommand.java:300) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_25]

15:30:23,977 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/retaguardaBO121].[Faces Servlet]] (http--127.0.0.1-8089-1) Servlet.service() for servlet Faces Servlet threw exception: java.lang.ClassCastException: org.primefaces.extensions.component.exporter.ExporterFactory$ExporterType cannot be cast to java.lang.String
	at org.primefaces.extensions.component.exporter.DataExporter.processAction(DataExporter.java:106) [primefaces-extensions-0.6.3.jar:0.6.3]
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:769) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UICommand.broadcast(UICommand.java:300) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:]
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
	at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
	at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_25]

que componente é esse “pe” ?

Igor,

esse pe e um extensor do primaFaces, além do jar primefaces-3.5.jar adicionei o jar primefaces-extensions-0.6.3.jar no meu projeto

para usar esta tag pe:..., pelos motivos que citei acima

<html xmlns:pe="http://primefaces.org/ui/extensions"
	xmlns:p="http://primefaces.org/ui">

Entendi…

É cara, vi o exemplo que você passou, mas está incompleto…
Ali, onde eu tinha falado pra vc trocar pelo ExporterType / tipoArquivo, vai ter que ser em formato String, igual estava mesmo…

Dei uma procurada, mas não consegui achar nada que pudesse te ajudar

Estranho que fiz para exportar para PDF e esta funcionando sem problemas,

			<p:commandLink id="pdf" ajax="false"  >  
			    <p:graphicImage value="/resources/imagens/pdf.png"/>  
			    <pe:exporter type="pdf" target="idDataTable42" fileName="retornoColecaoDados" isSubTable="true"/>
			</p:commandLink>  

o problema esta sendo para Excel,

alguém pode ajudar ?

Humm, pra pdf funciona…

Ja tentou com valor “xls” ao inves de “xlsx” ?

Sim