E ae galera
eu estou usando Subreport
passando como parametro por bean uma Collection que é gerada a partir de uma consulta
o codigo esta assim:
receptor.adicionaParametro(“subReport1”,);new JRBeanCollectionDataSource(Collection)
subReport é um parameter do tipo Object no relatorio
onde meu subReport do relatorio vai estar associado a ele
em Connection /DataSource Expression
*Eu apenas fiz uma condição pois há dois tipos de Subrelatorios…
quando o usuario seleciona o tipo do relatorio igual a ao tipo UM(quantidade menor de informação)
ele imprime o primeiro subreport
quando o parametro for = ao tipo DOIS (com mais tabelas de dados)
ele imprime o segundo subreport
essa condição eu fiz em Print Whem Expression do subreport
uma verificação do tipo assim (if ternario)
($FtipoRelatorio.equals("01") ? $PsubReport1 : $PsubReport2 )
o problema é o erro qeu dá
acontece um class cast exception
Caused by: javax.faces.el.EvaluationException: /emitirRelatorio.xhtml @556,85 action="#{controler.geraRelatorio}":excecao.Excecao: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : ($P{codTipoProposta} == "02" ? $P{subReport2} : $P{subReport1})
at com.sun.facelets.el.LegacyMethodBinding.invoke(LegacyMethodBinding.java:73)
at org.apache.myfaces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:61)
... 38 more
Caused by:excecao.Excecao: net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression :
Source text : ($P{tipoRelatorio} == "02" ? $P{subReport2} : $P{subReport1})
at...
Caused by: java.lang.ClassCastException: net.sf.jasperreports.engine.data.JRBeanCollectionDataSource
at RelatorioDetalhado_1211228740658_267813.evaluate(RelatorioDetalhado_1211228740658_267813:289)
at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:186)
... 85 more
achei qeu fosse a condição mas nao era
acho qeu é o tratamento do if…
por alguma razão ele nao executa o subreport em questao…
ja tentei de tudo nesses ifs…
e levei a conclusão que eh no resultado desse if…
por alguma razão ele nao esta tratando os subReports
Como faço para corrigir esse problema?
Alguem tem ideia do que esta acontecendo?
Atenciosamente