kjhuebner Posted August 2, 2006 Share Posted August 2, 2006 Hi,I've been trying to get a master and subreport to work using a custom datasource having a hierarchical structure. (See attached .zip file for full details) The datasource is composed of a list of rows (list of Maps with fieldname,value pairs) and associated with each row is a "sub" datasource (containing list of Maps with fieldname,value pairs). However, when I run report, it fails at filling the subreport due to failing at retrieving the "sub" datasource. My master template contains this snippet: <subreport>... <parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression> <dataSourceExpression><![CDATA[$P{REPORT_DATA_SOURCE}.getSubDataSourceFromRow("Tasks")]]></ dataSourceExpression>...</subreport> I'm not sure how to interpret the exception--as its failing deep in the Jasper engine.I tried explicitly casting the datasource with the classname of my custom data source, but it still fails. If anyone can explain what is going on, I'd appreciate it.Thanks!Ken--------------TRACE.... Error filling print... ENTERED TestDataSourceFactory.getTheDatasource() ENTERED TestDataSource() CONSTRUCTOR ENTERED addRow index=0 ENTERED TestDataSource(List) CONSTRUCTOR ENTERED TestDataSource.putSubDataSourceFromRow() key=Tasks ENTERED addRow index=1 ENTERED TestDataSource(List) CONSTRUCTOR ENTERED TestDataSource.putSubDataSourceFromRow() key=Tasks java.lang.ClassCastException: com.catalystwms.cct.web.beans.reports.TestDataSource at TestDataSource_1154462782283_984118.evaluate(TestDataSource_1154462782283_984118:124) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:556) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:524) at net.sf.jasperreports.engine.fill.JRFillDataset.setFillParameterValues(JRFillDataset.java :601) at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java: 563) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:878) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:689) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:713) at java.lang.Thread.run(Unknown Source) NESTED BY : java.lang.ClassCastException: com.catalystwms.cct.web.beans.reports.TestDataSource at TestDataSource_1154462782283_984118.evaluate(TestDataSource_1154462782283_984118:124) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:556) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:524) at net.sf.jasperreports.engine.fill.JRFillDataset.setFillParameterValues(JRFillDataset.java :601) at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java: 563) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:878) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:689) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:713) at java.lang.Thread.run(Unknown Source) NESTED BY : net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : Source text : $P{REPORT_DATA_SOURCE} at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:183) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:556) at net.sf.jasperreports.engine.fill.JRCalculator.evaluate(JRCalculator.java:524) at net.sf.jasperreports.engine.fill.JRFillDataset.setFillParameterValues(JRFillDataset.java :601) at net.sf.jasperreports.engine.fill.JRFillDataset.setParameterValues(JRFillDataset.java: 563) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:878) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:689) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:666) at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89) at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:713) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassCastException: com.catalystwms.cct.web.beans.reports.TestDataSource at TestDataSource_1154462782283_984118.evaluate(TestDataSource_1154462782283_984118:124) at net.sf.jasperreports.engine.fill.JREvaluator.evaluate(JREvaluator.java:172) ... 11 more Print not filled. Try to use an EmptyDataSource...! [file name=TestDataSource-a80125f43b48fad92970e67846f23056.zip size=27835]http://www.jasperforge.org/components/com_joomlaboard/uploaded/files/TestDataSource-a80125f43b48fad92970e67846f23056.zip[/file] Link to comment Share on other sites More sharing options...
lucianc Posted August 2, 2006 Share Posted August 2, 2006 Code:<parametersMapExpression><![CDATA[$P{REPORT_PARAMETERS_MAP}]]></parametersMapExpression> Never do this, the map you provide via parametersMapExpression will get altered by the subreport and passing the master report's parameters map this will have unexpected consequences. If you want to pass all the parameters from the master to the subreport, you should doCode:[code]<parametersMapExpression><![CDATA[new HashMap($P{REPORT_PARAMETERS_MAP})]]></parametersMapExpression> HTH,Lucian Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now