Ola galera…
Meu cadastro é novo no Fórum, mais já obtive muitas respostas por aqui, mais infelizmente não consegui resolver o meu problema com o GWT e Jasperreport, já encontre tópicos falando para utilizar servlet mais não faço ideia de como utilizar e configurar ele para utilizar em meu RPC.
Atualmente desenvolvi um classe simples onde fazendo a chamada direto do server ele mostra o relatório mas quando vou utilizar ele através do RPC ele mostra o relatório em branco.
Segue o código que funciona no server:
public class ImprimirRecibo {
public Integer ImpRecibo(Integer codrecibo) {
File file = new File("C:/Projeto/Workspace/ProjetoAgsi/relatorio");
String caminho = file.getAbsolutePath();
Imprimir(codrecibo, caminho);
return codrecibo;
}
public Integer Imprimir(Integer codrecibo, String caminho) {
Conexao conexao = new Conexao();
int id = codrecibo;
Map<String, Object> parametros = new HashMap<String, Object>();
parametros.put("recibo", id);
String arquivoJasper = caminho + "\\emissao_relatorio.jasper";
try {
JasperPrint print = JasperFillManager.fillReport(arquivoJasper,
parametros, conexao.getConnection());
JasperExportManager.exportReportToPdf(print);
JasperViewer.viewReport(print);
} catch (JRException e1) {
e1.printStackTrace();
}
return codrecibo;
}
Agradeceria muito se alguém tivesse algum exemplo do Jasper funcionando no GWT.
Abrç
Obrigado.
16:26:52,843 ERROR JRViewer:2035 - Page paint error.
java.lang.ClassCastException: net.sf.jasperreports.engine.export.DefaultExporterFilterFactory cannot be cast to net.sf.jasperreports.engine.export.ExporterFilterFactory
at net.sf.jasperreports.engine.export.ExporterFilterFactoryUtil.getFilterFactory(ExporterFilterFactoryUtil.java:53)
at net.sf.jasperreports.engine.JRAbstractExporter.createFilter(JRAbstractExporter.java:1296)
at net.sf.jasperreports.engine.export.JRGraphics2DExporter.exportReport(JRGraphics2DExporter.java:118)
at net.sf.jasperreports.view.JRViewer.paintPage(JRViewer.java:2029)
at net.sf.jasperreports.view.JRViewer$PageRenderer.paintComponent(JRViewer.java:2179)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JViewport.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JLayeredPane.paint(Unknown Source)
at javax.swing.JComponent.paintChildren(Unknown Source)
at javax.swing.JComponent.paintToOffscreen(Unknown Source)
at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
at javax.swing.RepaintManager.paint(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at java.awt.GraphicsCallback$PaintCallback.run(Unknown Source)
at sun.awt.SunGraphicsCallback.runOneComponent(Unknown Source)
at sun.awt.SunGraphicsCallback.runComponents(Unknown Source)
at java.awt.Container.paint(Unknown Source)
at java.awt.Window.paint(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.RepaintManager.seqPaintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Mesmo dando esse erro ele abre o PDF e mostra a seguinte mensagem:
Erro ao expor página do relatório. Verifique o console para detalhes.
Essa é a minha chamada no RPC
Integer imprimirRecibo(Integer recibo);
RPCAsync
void imprimirRecibo(Integer recibo, AsyncCallback callback);
Impl
public Integer imprimirRecibo(Integer recibo) {
this.recibo.ImpRecibo(recibo);
return recibo;
}
Esqueça RPC… para isso você deve utilizar uma chamada http normal… o RPC do GWT não vai funcionar para isso por que não tem como converter o código do jasperReports para javascript… o que você pode fazer é o que já foi dito antes… cria um Servlet que recebe parâmetros via post por exemplo… e retorna o stream do PDF… execute a chamada e mande a saída para uma nova página… é a melhor maneira de fazer… caso queira embutir o pdf na página sempre existe a possibilidade de usar um iframe…
Boa tarde Marcelo…
Já estive pesquisando a respeito até peguei alguns exemplos de servlet, mais não sei como posso fazer a chamada do servlet do gwt e como faz tempo que não utilizo servlet não lembro o que tenho que configurar se é só o web.xml ou tenho que fazer outra configuração, tanto que quando configuro o web.xml me retorna um erro de RPC.