Pessoal, estou com um caso de um componente primefaces que se encontra dentro de 2 h:form.
O primeiro form está dentro do arquivo seriePreco.xhtml e contem uma tab tabview que apresenta 3 tipos de informacoes: historico, projecoes e simulacoes:
<h:form id="formGeral">
<p:tabView id="tabViewGeral" dynamic="true">
<p:tab title="Historico">
<ui:include src="historico.xhtml"/>
</p:tab>
<p:tab title="Projeções">
<ui:include src="projecoes.xhtml"/>
</p:tab>
<p:tab title="Simulações">
<ui:include src="simulacoes.xhtml"/>
</p:tab>
</p:tabView>
</h:form>
Na tab Simulacoes, chamo o arquivo simulacoes.xhtml que alem de fazer o cadastro de simulacoes permite baixar arquivos excel com os dados das simulacoes. Os planilhas de excel podem conterm matrices de 52 x 2000 (colunas x filas). No arquivo simulacoes.xhtml tenho uma tabela com as simulacoes organizadas por data e uma commandlink que permite baixar o arquivo excel.
<h:form id="formSimulacao">
<p:dataTable id="tabelaSimulacoes" value="#{simulacaoBean.listaSimulacoes}" var="simulacao">
<p:column headerText="Data de criacao">
<h:outputText value="#{simulacao.dataCriacao}">
<f:convertDateTime pattern="dd/MM/yyyy hh:mm" />
</h:outputText>
</p:column>
<p:column headerText="Nome">
<h:outputText value="#{simulacao.nome}" />
</p:column>
<p:column headerText="Numero de simulacoes">
<h:outputText value="#{simulacao.numeroSimulacoes}" />
</p:column>
<p:column headerText="Ações">
<h:commandLink id="lknDownload" value="download">
<p:fileDownload value="#{simulacaoBean.arquivoParaDownload}"/>
</h:commandLink>
</p:column>
</p:dataTable>
</h:form>
No managedBean o código eh simples e funciona muito bem quando eh chamado:
public StreamedContent getArquivoParaDownload() {
// aqui vai o codigo que gera o arquivo excel e no final simplesmente retorna
return file;
}
Eu verifiquei que se tiro o <h:form id=“formSimulacao”> (form interno) o link download passa a funcionar.
Tenho tentado de diversas formas com ajax e tudo mais, sem sucesso. Do jeito que está o commandlink nao apresenta a tela para salvar o arquivo Xls.
Eu tenho optado por usar 2 formularios pois os formularios de projecoes e simulacao sao reutilizados em varias parte otras series: seriesCusto.xhtml por exemplo.
Estou usando PrimeFaces 2.2.1, Tomcat 7, JSF 2.1.2, Eclipse Indigo R2.
Alguma ideia? desde já grato!!!
Carlos