FileDownload do primefaces em um DataTable

4 respostas
F

Estou tentando colocar um FileDownload em um DataTable e ao clicar em um commandLink, preciso passar o objeto selecionado na DataTable para o controler, para saber o caminho do arquivo pdf e qual arquivo pdf buscar, mas para fazer isso preciso fazer o seguinte…

<p:column> <p:commandLink id="cmdImprimeDanfe" ajax="false"> <h:graphicImage url="../img/impressora.png" styleClass="bordaIE"/> <p:fileDownload value="#{danfeController.file}" /> <f:setPropertyActionListener value="#{nfe}" target="#{danfeController.selectedNFe}"/> </p:commandLink> </p:column>

mas quando faço isso o comando danfeController.file executa primeiro que o setPropertyActionListener entao nao tenho ainda o objeto

public StreamedContent getFile() throws FileNotFoundException { InputStream stream = new FileInputStream(selectedNFe.getEmpresa().getDirXmlNormal() + selectedNFe.getChNFe() + ".pdf"); file = new DefaultStreamedContent(stream, "application/pdf", selectedNFe.getChNFe() + ".pdf"); return file; }

selectedNFe vem nulljava.lang.NullPointerException br.com.grupointesis.mensagerianfe.controller.DanfeController.getFile(DanfeController.java:37)

como resolvo esse problema?

4 Respostas

R

Você conseguiu resolver este problema?
Se sim, como conseguiu?
Estou passando pelo mesmo problema

Obrigado

F

consegui resolver fazendo um confirmDialog, ele seta os dados como caminho do arquivo, se o usuario clicar no sim baixo o arquivo, fazendo direto nao obtive resultado

R

Mano, faz assim

<p:column headerText="Download"
												style="width:10px;text-align:center">
												<p:commandButton ajax="false" title="Download"
													actionListener="#{downloadBean.prepararArquivo(ex)}">
													<p:fileDownload
														value="#{downloadBean.arquivoParaDownload}" />
												</p:commandButton>
											</p:column>

o prepararArquivo recebe o objeto do tipo que está no seu datatable, ao invés de usar o setpropriertlistener
funciona perfeitamente, mas tem que ser commandbutton, se for commandlink dá pau, não sei qual a razão

F

Entendi por isso nao funcionava sempre tentei fazer com o CommandLink

Criado 21 de outubro de 2011
Ultima resposta 21 de nov. de 2011
Respostas 4
Participantes 2