Relatorio jasper + primefaces

oi galera

apesar de pesquisar bastante antes de postar aqui, nao achei uma solução para o problema. Por isso quero ajuda :lol:

eu quero exibir um relatorio jasper (to usando primefaces 3.4.2) e ele só abre o relatorio se no commandButton eu colocar ajax=false

<p:commandButton value="Imprimir" icon="ui-icon-print" action="#{cadastroController.imprimirSolicitacao()}" ajax="false"/>

Se eu usar ajax, ele não abre…alguem sabe me explicar pq isso?

Mas se eu uso ajax= false, ele da erro nos meus datatable

Caused by: java.lang.NullPointerException at org.primefaces.component.datatable.DataTable.getRowData(DataTable.java:794) at org.primefaces.component.datatable.feature.SelectionFeature.decodeSingleSelection(SelectionFeature.java:46) at org.primefaces.component.datatable.feature.SelectionFeature.decode(SelectionFeature.java:37) at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:53) at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787) at org.primefaces.component.api.UIData.processDecodes(UIData.java:224)

Ao inves de action, tente com actionListener e veja se funciona.

actionListener="#{cadastroController.imprimirSolicitacao()}"

Vou tentar…sera que o actionListener tem diferenca e funciona com ajax?

O actionListener é a primeira chamada antes do ajax, voce pode mudar a ordem acrescentando immediate=true, isso fará com que o ajax venha primeiro que os actions. Faça um teste, voce so postou o seu botao, logo, estou podendo ajudar voce somente com hipoteses.

mudei, ele passou pelo metodo mas nao abriu o relatorio

<p:commandButton value="Imprimir" icon="ui-icon-print" actionListener="#{cadastroController.imprimirSolicitacao()}" immediate="true" process="@this" update="@this"/>

achei o erro, eu tinha um componente (composite) que fazia uma consulta e exibia em um datatable. Esse componente estava fora do form e como ele estava como selection = “single” ele dava erro de nullpointerexception quando eu executava o relatorio.

Dai corrigi isso, e chamando assim

<p:commandButton value="Imprimir" icon="ui-icon-print" action="#{cadastroController.imprimirSolicitacao()}" ajax="false"/>  

passou a funcionar perfeitamente :lol:

o mais foda desses erros é que nao exibe onde o problema de fato ocorre…dai numa pagina grande, cheia de componentes temos que sair garimpando o erro

mas ta ai a solução…valeu cara

:smiley:

parabens ^^