Como usar relatório com vRaptor?

21 respostas
L

Boa Tarde!

No velho servlet eu usava assim:

private void relCliente( HttpServletResponse res) { 
        try{
            JasperRunManager.runReportToPdfStream(getClass().getClassLoader().getResourceAsStream("/br/com/keia/servlet/relCliente.jasper"), res.getOutputStream(), new HashMap(), getConexao());
            res.addHeader("Content-Disposition","attachment; filename=relCliente.pdf");
            res.getOutputStream().flush();
            res.getOutputStream().close();
            getConexao().close();
        }catch(Exception ex){
            ex.printStackTrace();        
        }
    }

e no vraptor como fazer???

Abraço.

21 Respostas

Lucas_Cavalcanti

se vc conseguir transformar o relatório em um InputStream ou em um File, vc coloca esse método em algum controller:

public Download geraRelatorio(...) {
       File relatorio = //o arquivo do relatório
       return new FileDownload(relatorio, "application/pdf", "relCliente.pdf", true);
       //parametros: arquivo, contentType, nome do arquivo, forçar download
}

no caso do InputStream, vc tem o InputStreamDownload, que além dos parâmetros acima, vc tem que informar o tamanho do download

Lagaffe

Eu cheguei na seguinte solução com itext que funciona:

ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); 
		PdfWriter.getInstance(document, outputStream);
                ... (código para preencher o document com itext)
		InputStream documentInput = new ByteArrayInputStream(outputStream.toByteArray());
		return new InputStreamDownload(documentInput,"application/pdf",  "relatorio.pdf");

Será que a solução é boa? Eu não informei o tamanho do download, é necessário? como consigo?

O único problema é que no Windows ele abre o relatório na mesma janela. Existe alguma forma de forçar a abrir em outra?

Lucas_Cavalcanti

o tamanho vc consegue com:

outputStream.toByteArray().length

pra abrir em outra janela vc vai ter que mudar o link que gera o relatório… algo como:

<a target="qqrCoisa" href="logicaDoRelatorio">...
Lagaffe

Obrigado Lucas,

Funcionou (as duas dúvidas).

As vezes complicamos e não enxergamos a solução obvia e simples.

L

Lagaffe,

Bom dia!

tem como vc por sua solução da geração do pdf e como vc chamou ele no controller???

se for possível agradeço.

Lagaffe

Lico:

no jsp:

<a target="novaJanela" href="<c:url value="/relatoriosController/propostaLocacao/${ol.id}/proposta"/>">

no controler:

@Resource
public class RelatoriosController {
	private final OLDao olDao;
	private final EnderecoDao enderecoDao;
	
	public RelatoriosController(OLDao olDao, EnderecoDao enderecoDao) {
		this.olDao = olDao;
		this.enderecoDao = enderecoDao;
	}
	
	@Get
	@Path("/relatoriosController/propostaLocacao/{ol.id}/proposta")
	public InputStreamDownload propostaLocacao(OL ol) throws MalformedURLException, IOException {
		
		final int[] COLUMNWIDTHS = { 7, 7, 35, 10, 10};
		Integer seq = 0;
		float valorTotal = 0;
		
		NumberFormat numberFormat = NumberFormat.getInstance(new Locale("pt","BR"));  
                numberFormat.setMinimumFractionDigits(2);
        
                LocalDate dt = new LocalDate();
        
		Font[] fonts = new Font[6];
		fonts[0] = FontFactory.getFont(FontFactory.HELVETICA, Font.DEFAULTSIZE, Font.NORMAL);
                fonts[1] = FontFactory.getFont(FontFactory.HELVETICA, 20, Font.NORMAL);
                fonts[2] = FontFactory.getFont(FontFactory.HELVETICA, 15, Font.NORMAL);
                fonts[3] = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.NORMAL);
                fonts[4] = FontFactory.getFont(FontFactory.HELVETICA,  8, Font.NORMAL);
                fonts[5] = FontFactory.getFont(FontFactory.HELVETICA, Font.DEFAULTSIZE, Font.BOLD);

		ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
		
		Document document = new Document();
		try {
			PdfWriter.getInstance(document, outputStream);

			document.open();

// colocar aqui a lógica e formatação do relatório: document.add(????);

		} catch (DocumentException de) {
			System.err.println(de.getMessage());
		}

		document.close();
		String contentType = "application/pdf";  
		String fileName = "relatorio.pdf";
		InputStream documentInput = new ByteArrayInputStream(outputStream.toByteArray());
		return new InputStreamDownload(documentInput, contentType, fileName, true, outputStream.toByteArray().length);
	}

E é só.

A documentação do iText é muito boa e tem muitos exemplos.

A versão atual do iText é a 5.01, mas me parece que não está estável. Estou usando a 2.1.7.

Espero que isso te atenda. Qualquer dúvida é só perguntar.

L

Lagaffe,

Por favor me dê uam ajudinha a mais, tipo assim tenho um arquivo jasper posso passar ele pra esse modelo que você me mandou??? e eu posso usar sem passar parametros porq é uma lista de alunos por exemplo segue o codigo abaixo:

Controller

@Get
     @Path("/relatorio/alunos")
     public InputStreamDownload relatorioAlunos() throws MalformedURLException, IOException, DocumentException {

         final int[] COLUMNWIDTHS = { 7, 7, 35, 10, 10};
         Integer seq = 0;
         float valorTotal = 0;

         NumberFormat numberFormat = NumberFormat.getInstance(new Locale("pt","BR"));
                 numberFormat.setMinimumFractionDigits(2);

                // LocalDate dt = new LocalDate();

         Font[] fonts = new Font[6];
         fonts[0] = FontFactory.getFont(FontFactory.HELVETICA, Font.DEFAULTSIZE, Font.NORMAL);
                 fonts[1] = FontFactory.getFont(FontFactory.HELVETICA, 20, Font.NORMAL);
                 fonts[2] = FontFactory.getFont(FontFactory.HELVETICA, 15, Font.NORMAL);
                 fonts[3] = FontFactory.getFont(FontFactory.HELVETICA, 10, Font.NORMAL);
                 fonts[4] = FontFactory.getFont(FontFactory.HELVETICA,  8, Font.NORMAL);
                 fonts[5] = FontFactory.getFont(FontFactory.HELVETICA, Font.DEFAULTSIZE, Font.BOLD);

         ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

         Document document = new Document();
         try {
             PdfWriter.getInstance(document, outputStream);

             document.open();
             document.getClass().getClassLoader().getResourceAsStream("br/com/catequese/relatorio/alunos.jasper");

 // colocar aqui a lógica e formatação do relatório: document.add(????);

         } catch (DocumentException de) {
             System.err.println(de.getMessage());
         }

         document.close();
         String contentType = "application/pdf";
         String fileName = "relatorio.pdf";
         InputStream documentInput = new ByteArrayInputStream(outputStream.toByteArray());
         return new InputStreamDownload(documentInput, contentType, fileName, true, outputStream.toByteArray().length);
     }

no JSP

<a target="_blank" href="<c:url value="/relatorio/alunos"/>">Alunos</a>

Agradeço desde já

Lagaffe

Lico,

Não tenho nenhuma experiência com Jasper. Estava começando a estudar quando achei o iText. Achei o iText muito mais simples e atende por enquanto o que preciso. Inclusive o Jasper usa classes do iText (e vários outros geradores de relatórios).

Minha sugestão é de que você converta tudo para iText ou use as dicas do Lucas.

achei o seguinte na internet para criar um InputStream a partir de um arquivo compilado:

InputStream is = this.getClass().getClassLoader().getResourceAsStream(“jasper/” + jasperName);

Lucas_Cavalcanti

você pode fazer algo do tipo:

ByteArrayOutputStream os = new ByteArrayOutputStream();
  JasperRunManager.runReportToPdfStream(getClass().getClassLoader()
                   .getResourceAsStream("/br/com/keia/servlet/relCliente.jasper"), os, new HashMap(), getConexao());
  InputStream document = new ByteArrayInputStream(os.toByteArray());  
         return new InputStreamDownload(document, contentType, fileName, true, os.toByteArray().length);
L

Lucas

Boa Noite

tentei fazer do modo que você mensionou mais ai no meu controller está assim:

public Download geraRelatorio() {  
InputStreamDownload relatorio = dao.relatorio();  
return relatorio;  

}

Uma pergunta básica preciso criar um jsp pra abrir o pdf?
se preciso criar que dados eu colocaria porq na verdade ele abriria no acrobat ou estou equivocado?

agradeço a ajuda

Lucas_Cavalcanti

se vc fizer só isso ele vai tentar mostrar no browser o pdf…

no InputStreamDownload, vc pode passar um boolean de doDownload… se ele for true, o browser vai abrir uma caixa de download, se for false o browser vai tentar mostrar

L

Lucas

Bom dia!

Andei vendo o erro acontece neste código.

Ele imprime o primeiro System.out.print

o segundo ele não imprime

o erro eu acredito que esteja na passagem do arquivo porq estou colocando um teste no codigo e ele diz que o arquivo não existe, veja o caminho do arquivo como estou passando

public InputStreamDownload relAlunos() throws JRException, SQLException, ClassNotFoundException {
      
    String file = "/br/com/catequese/relatorio/codigoBarra.jasper";
    File arq = new File(file);
     
    //Verificando se o arquivo é existente
    if ( arq.exists()){ // se arquivo existir
        System.out.println("Arquivo existe");
     }else{
         System.out.println("Arquivo nao existe");
     }


     ByteArrayOutputStream os = new ByteArrayOutputStream();
     JasperRunManager.runReportToPdfStream(getClass().getClassLoader()
        .getResourceAsStream(file), os, new HashMap(), getConexao());
     System.out.println("Arquivo pdf aqui");
     InputStream document = new ByteArrayInputStream(os.toByteArray());
     return new InputStreamDownload(document, "Content-Disposition", "attachment; filename=codigoBarra.pdf", true,   os.toByteArray().length);
}

Me ajude por favor

Lucas_Cavalcanti

new File(file) é diferente do …getResourceAsStream(file)

no new File, a ‘/’ no começo significa a partir da raiz do seu sistema operacional (c:\ no windows, / no unix)… já no getResourceAsStream é a partir do classpath…

qual erro tá dando?

L

Lucas o erro no jsp q é impresso é esse:

java.lang.NullPointerException

br.com.caelum.vraptor.InterceptionException: an exception was raised while executing resource method

desde já agradeço

Lucas_Cavalcanti

em que linha tá dando essa null pointer? posta as primeiras linhas da stacktrace (que deve estar no log do servidor)

L

Lucas tive que desativar o intercept pra conseguir ver o log no servidor, mas segue ele:

br.com.caelum.vraptor.InterceptionException: an exception was raised while executing resource method
        at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
        at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
        at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
        at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
        at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
        at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
        at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
        at net.sf.jasperreports.engine.JRPropertiesMap.getProperty(JRPropertiesMap.java:102)
        at net.sf.jasperreports.engine.util.JRProperties.getProperty(JRProperties.java:474)
        at net.sf.jasperreports.engine.util.JRProperties.getIntegerProperty(JRProperties.java:512)
        at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:139)
        at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:103)
        at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:662)
        at net.sf.jasperreports.engine.fill.JRFillDataset.setDatasource(JRFillDataset.java:606)
        at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:595)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:879)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:708)
        at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666)
        at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:363)
        at net.sf.jasperreports.engine.JasperRunManager.runReportToPdfStream(JasperRunManager.java:163)
        at br.com.catequese.dao.AlunoDao.relAlunos(AlunoDao.java:103)
        at br.com.catequese.controller.AlunoController.relatorio(AlunoController.java:124)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
        ... 40 more

espero q possa me ajudar mais nessa

Lucas_Cavalcanti

seu relatório precisa de algum parâmetro que deveria ser passado naquele new HashMap()??

L

Lucas

Na verdade o meu relatorio é só um select geral:

select * from alunos

Nada mais por isso o relatório não é necessário parametros.
montei outro relatório e o erro é o mesmo:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

br.com.caelum.vraptor.InterceptionException: an exception was raised while executing resource method
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

java.lang.NullPointerException
	net.sf.jasperreports.engine.JRPropertiesMap.getProperty(JRPropertiesMap.java:102)
	net.sf.jasperreports.engine.util.JRProperties.getProperty(JRProperties.java:474)
	net.sf.jasperreports.engine.util.JRProperties.getIntegerProperty(JRProperties.java:512)
	net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:139)
	net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:103)
	net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:662)
	net.sf.jasperreports.engine.fill.JRFillDataset.setDatasource(JRFillDataset.java:606)
	net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java:595)
	net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:879)
	net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:708)
	net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666)
	net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:63)
	net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:402)
	net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:363)
	net.sf.jasperreports.engine.JasperRunManager.runReportToPdfStream(JasperRunManager.java:163)
	br.com.catequese.dao.AlunoDao.relAlunos(AlunoDao.java:105)
	br.com.catequese.controller.AlunoController.relatorio(AlunoController.java:124)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	java.lang.reflect.Method.invoke(Method.java:597)
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

Se tiver outra ideia agradeço.

Lucas_Cavalcanti

tenta usar esse código pra gerar o relatório:

jasperReport = JasperCompileManager.compileReport(caminhoDoRelatorio);
      jasperPrint = JasperFillManager.fillReport(jasperReport, new HashMap(), conn.getConexao());
      byte[] oRelatorio = JasperExportManager.exportReportToPdf(jasperPrint);
      ///Faz conversao byte[] para InputStream
      InputStream arquivo = new ByteArrayInputStream(oRelatorio);           
        return new InputStreamDownload(arquivo, "application/pdf", "relatorio.pdf");
L

Lucas,

Boa Tarde!

Mais uma vez fomos fechando os caminhos pra solução.

Pensei o seguinte em pegar versão mais recente do itext, jasper e common digest.

E era isso acredita resolveu o problema, menos mal.

Abraço.

e valeu pela atenção e ajuda.

Lavieri

eu resolvi assim => http://guj.com.br/posts/list/0/201107.java#1014144

Criado 13 de março de 2010
Ultima resposta 16 de mar. de 2010
Respostas 21
Participantes 4