[RESOLVIDO] ExtJS4 com Ireport. Não consigo renderizar o relatorio

Bom dia,

Milfont só posso testar a noite. eheheheheheh… Agradeço o esforço, quando for a noite eu testo e te dou um retorno.

Obrigado.

Abraços.

Bom dia a todos… Consegui resolver… UFFAAA… tava pra desistir e tentar faculdade de medicina… abaixo vão os códigos:

Método que eu fiz para gerar o arquivo:

@ActionList
	public void listarTdasEmpresas(ServletContext context,Empresa element,HttpServletRequest request,HttpServletResponse response) {
		
		try {
		
			
			//String caminhoRelatorio = request.getContextPath().toString();
			
			context.getServletContextName().toString();
			
			File arquivo = new File(context.getRealPath("/recursos/templateRelatorio/empresa.jrxml"));
			
				
		Map<String,Object> map = new HashMap<String, Object>();
		
		List<Empresa> listaEmpresas = empresaDao.listarEmpresasPorNomeFantasia(element.getNomeFantasia());
		
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(listaEmpresas);  
		
		JasperDesign jasperDesign = JRXmlLoader.load(arquivo);
		JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
		JasperPrint jasperprint = JasperFillManager.fillReport(jasperReport, map,ds);
		JRAbstractExporter exporterPDF = new JRPdfExporter();
		exporterPDF.setParameter(JRExporterParameter.JASPER_PRINT, jasperprint);
		exporterPDF.setParameter(JRExporterParameter.OUTPUT_STREAM, response.getOutputStream());
		response.setHeader("Content-Disposition", "inline;filename="+ "relatorio.pdf");
		response.setContentType("application/pdf");
		exporterPDF.exportReport();
		
		result.use(Results.nothing());
		
		//result.use(Results.json()).from(arquivo, "arquivo").serialize();
		
		} catch(Exception exception) {
		exception.printStackTrace();
				/*getMessage());*/
		}
		}
	

E aqui a parte do ExtJS:

'pesquisarEmpresa button[action=gerar_relatorio]': {
    			click: function(){
    				
    				var value = Ext.getCmp('empresaNomeFantasiaPesquisar').getValue();  
                    var j = new Ext.Window({      
                                title : "iframe",      
                                width : 400,      
                                height: 400,      
                                layout : 'fit',      
                                items : [  
                                        new Ext.Panel({    
                                             autoWidth: true,     
                                             autoHeigth: true,    
                                             html:"<iframe width='100%' height='400' src='/vianet/empresa/listarTdasEmpresas?element.nomeFantasia="+value+"'></iframe>"    
                                        })    
                                
                            ]      
                            }).show();
        }
    		},

Agradeço ao Milfont e a todos que tentaram me ajudar de alguma forma… Grande abraço.

Bom dia pessoal,

eu só tenho uma dúvida. E se eu quisesse jogar o relatorio para download sem que abrisse o iframe? Como eu faria?

eu sei que eu mudaria no meu método no java o seguinte:

response.setHeader("Content-Disposition", "attachment;filename="+ "relatorio.pdf");

porém eu não saberia como ficaria no front-end… como eu faria no ExtJS ?

[quote=EuclidesFilizola]Bom dia pessoal,

eu só tenho uma dúvida. E se eu quisesse jogar o relatorio para download sem que abrisse o iframe? Como eu faria?

eu sei que eu mudaria no meu método no java o seguinte:

response.setHeader("Content-Disposition", "attachment;filename="+ "relatorio.pdf");

porém eu não saberia como ficaria no front-end… como eu faria no ExtJS ?

[/quote]

Euclides, voce pode colocar um link como opção de download, basta por uma tag < a > com a url apontando para o pdf, no server side voce já colocou como devia.

Entendo, porém como faço para que não abra a janela ? Pois o problema é que estou fazendo:

  new Ext.Window({      
                                    title : "iframe",      
                                    width : 400,      
                                    height: 400,      
                                    layout : 'fit',      
                                    items : [  
                                            new Ext.Panel({    
                                                 autoWidth: true,     
                                                 autoHeigth: true,    
                                                 html:"<a ></a>"
                                                 //html:"&lt;iframe width='100%' height='400' src='/vianet/empresa/listarTdasEmpresas?element.nomeFantasia="+value+"'&gt;&lt;/iframe&gt;"    
                                            })    
                                    
                                ]      
                                }).show();
                                
                                }

Ou seja, estou abrindo um new Window … que tipo de evento posso jogar no Extjs que ele chame meu método direto ?

[quote=EuclidesFilizola]Entendo, porém como faço para que não abra a janela ? Pois o problema é que estou fazendo:

  new Ext.Window({      
                                    title : "iframe",      
                                    width : 400,      
                                    height: 400,      
                                    layout : 'fit',      
                                    items : [  
                                            new Ext.Panel({    
                                                 autoWidth: true,     
                                                 autoHeigth: true,    
                                                 html:"<a ></a>&quot;
                                                 //html:&quot;&lt;iframe width='100%' height='400' src='/vianet/empresa/listarTdasEmpresas?element.nomeFantasia=&quot;+value+&quot;'&gt;&lt;/iframe&gt;&quot;    
                                            })    
                                    
                                ]      
                                }).show();
                                
                                }

Ou seja, estou abrindo um new Window … que tipo de evento posso jogar no Extjs que ele chame meu método direto ?[/quote]

Euclides, voce não vai abrir a janela, simplesmente o que aciona essa Window hoje vai ser trocado por um link comum.
Eu ainda faria o seguinte, colocaria dois links, um "Visualizar"e outro “Download”, o primeiro faz o que ele já fazia, o segundo aponta a url “’/vianet/empresa/listarTdasEmpresas?element.nomeFantasia=” direto na tag < a >