Erro com relatório utilizando o plugin jasper
21/11/2011 01:57
0
Olá pessoal,

estou começando a utilizar o jasper reports e esta dando alguns problemas que nao estou conseguindo resolver. Ate vi uns problemas parecidos aqui no forum, mas nenhum estava resolvido.

Entao, tenho uma tabela no banco chamada 'Historico' (que tem um Usuario, uma mensagem e uma data).
class Historico {
Usuario usuario
String mensagem
Date data
}


defini no controlador uma closure para gerar o relatorio:
 def createReport = {
def historico = Historico.list()
chain(controller:'jasper',action:'index',model:[data:historico],params:params)
}


este controlador é chamado por uma pagina da seguinte forma:
<g:jasperReport action="createReport" controller="historico" format="PDF" jasper="report1" name="Historico geral" />


o arquivo 'report1' esta na pasta 'web-app\reports', tanto na extensao .jasper quanto na .jrxml.

Quando executo a acao da o erro abaixo:
obs: o relatorio esta correto. Gerei ele pelo iReport e compilou certinho...

Error 500: Executing action [index] of controller [org.codehaus.groovy.grails.plugins.jasper.JasperController] in plugin [jasper] caused exception: null
Servlet: grails
URI: /sisdd/grails/jasper/index.dispatch
Exception Message:
Caused by:
Class: Unknown
At Line: [-1]
Code Snippet:


e a Stack Trace:
java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method)
at net.sf.jasperreports.engine.fill.JRFillTextField.getFormat(JRFillTextField.java:706)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluateText(JRFillTextField.java:394)
at net.sf.jasperreports.engine.fill.JRFillTextField.evaluate(JRFillTextField.java:368)
at net.sf.jasperreports.engine.fill.JRFillElementContainer.evaluate(JRFillElementContainer.java:258)
at net.sf.jasperreports.engine.fill.JRFillBand.evaluate(JRFillBand.java:499)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillColumnBand(JRVerticalFiller.java:2036)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillDetail(JRVerticalFiller.java:760)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReportStart(JRVerticalFiller.java:270)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:128)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:946)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:845)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:58)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:417)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:378)
at net.sf.jasperreports.engine.JasperFillManager$fillReport.call(Unknown Source)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at java.lang.Thread.run(Thread.java:662)



Alguma dica? o que eu fiz de errado?
Tags: relatorio, jasper, report, erro


0
Verifique se voce mudou a linguagem do relatorio de java para groovy.
Uma sugestao que eu posso te dar para simplificar o uso do plugin jasper é usar um servico para gerar o relatorio ao invés de executar um chain para o controller. Pois existe algum bug nao identificado que em determinadas situacoes ele converte algumas instancias para string.
Isso acontece mais com inputstreams mas pode estar acontecendo com vc.

Abaixo segue o codigo que uso do servico que fiz para imprimir relatorios:



package app
import org.codehaus.groovy.grails.plugins.jasper.JasperReportDef

class ImpressaoService {

static transactional = true
static scope = "request"
def jasperService
/**
* Generate a html response.
*/

def criarRelatorioViaFormularioJasper = {params, request, response, dados ->
params.data = dados;
JasperReportDef report = jasperService.buildReportDefinition(params, request.getLocale(), null)
generateResponse report,response
}

def generateResponse = {reportDef, response ->
response.setHeader("Content-disposition", "attachment; filename="+(reportDef.parameters._name ?: reportDef.name) + "." + reportDef.fileFormat.extension);
response.contentType = reportDef.fileFormat.mimeTyp
response.characterEncoding = "UTF-8"
response.outputStream << reportDef.contentStream.toByteArray()

}
22/11/2011 11:49



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto