Problemas com coleções no Ireport

2 respostas
nasper1904

Oi galera, tô precisando de uma ajudinha.

Quando eu coloco um campo do tipo collection do meu DETAIL no relatório acontece a exceção abaixo. Isso acontece tmb quando uso essa coleção para o subrelatório.

Alguem sabe como resolver isso???

obs.: A exceção abaixo aconteceu quando eu coloquei o field direto no relatório só pra testar. Mais a mesma exceção acontece quando coloco no subReport.

Valeu pessoal! Muito Obrigado!

javax.servlet.ServletException: Error evaluating expression : 
	Source text : "" + $F{defeitoSet}
	com.opensymphony.webwork.views.jasperreports.JasperReportsResult.doExecute(JasperReportsResult.java:207)
	com.opensymphony.webwork.dispatcher.WebWorkResultSupport.execute(WebWorkResultSupport.java:101)
	com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:312)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:207)
	com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:137)
	com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:115)
	com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:171)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:151)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:100)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)
	com.opensymphony.xwork.ActionChainResult.execute(ActionChainResult.java:156)
	com.opensymphony.xwork.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:312)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:207)
	com.opensymphony.xwork.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:137)
	com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:115)
	com.opensymphony.xwork.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:81)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.webwork.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:171)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:151)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.AroundInterceptor.intercept(AroundInterceptor.java:31)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:100)
	com.opensymphony.xwork.DefaultActionInvocation.invoke(DefaultActionInvocation.java:189)
	com.opensymphony.xwork.DefaultActionProxy.execute(DefaultActionProxy.java:113)
	com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:233)
	com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:198)
	tre.sisurna.ww.action.FiltroPermissaoUsuario.doFilter(FiltroPermissaoUsuario.java:62)

2 Respostas

black_fire
não cheguei olhar sua exception, mas quando vc manda uma collection para o JasperReports (IReport), vc tem q converter ela para um datasource do jasper, vc está fazendo isso? tenta fazer assim:
JasperPrint jp = JasperFillManager.fillReport(
    input_stream_relatorio, 
    seus_parametros_hash_map , 
    new JRBeanCollectionDataSource(sua_collection));

// depois é  gerar o relatorio 
JRPdfExporter pdfExpo = new JRPdfExporter();
pdfExpo.setParameter(JRExporterParameter.JASPER_PRINT, jp);
pdfExpo.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, report.getFileName());
pdfExpo.exportReport();

veja que no metodo fillReport, vc precisa passar a sua collection como DataSource. Não precisa definir o um parametro para enviar a collection (eu nunca usei passando a collection direto, deve funcionar, mas eu nao sei como faz).

abraço,

nasper1904

Rapaz, eu descobri que o problema era com o webwork.

Ele tentava fazer um cast do JRBEan… para OgnlValueStack

Com o webwork basta coloca uma lista no subrelatorio.

O resto é com ele. Ahh, a lista deve tá como object!

Valeu por tudo!

Criado 24 de julho de 2006
Ultima resposta 25 de jul. de 2006
Respostas 2
Participantes 2