birt - Seam component always null with birt embed
gonzalad Sep 22, 2009 12:12 PMHello,
I'm using a Seam component in birt report (from a scripted datasource).
When I try to access a Seam Component from a birt report and when I use embed mode(designType="embed"), Seam component is always null.
When I use designType="run", everything works fine.
I don't understand why.
It appears to me to have a relation with UIDocument's logic when we call JBossBirtServlet with an URLConnection :
URL birtURL = new URL(urlString); URLConnection connection = birtURL.openConnection(); InputStream stream = connection.getInputStream();
When I change this code from UIDocument code to use requestDispatcher.include, it works fine.
Should I open a JIRA issue (with test case) ?
Thanks for your help !
My jsf page output :
The following items have errors: ReportDesign (id = 1): + There are errors evaluating script "importPackage(Packages.org.jboss.seam); importPackage(Packages.org.apache.log4j); sampleReportList = Component.getInstance("sampleReportList", false); logger = Logger.getLogger("com.natixis.birt"); logger.warn("sampleReportList = "+sampleReportList); reportsIterator = sampleReportList.getNames().iterator(); ": {1}. Error.ScriptEvaluationError ( 1 time(s) )detail : org.eclipse.birt.report.engine.api.EngineException: There are errors evaluating script "importPackage(Packages.org.jboss.seam);importPackage(Packages.org.apache.log4j); sampleReportList = Component.getInstance("sampleReportList", false); logger = Logger.getLogger("com.natixis.birt"); logger.warn("sampleReportList = "+sampleReportList); reportsIterator = sampleReportList.getNames().iterator();":{1}. at org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor.handleJS(DtEScriptExecutor.java:77) ... Caused by: org.eclipse.birt.data.engine.core.DataException: A BIRT exception occurred: There are errors evaluating script "__bm_OPEN()":TypeError: Cannot call method "getNames" of null (<inline>#7). See next exception for more information.There are errors evaluating script "__bm_OPEN()":TypeError: Cannot call method "getNames" of null (<inline>#7) at org.eclipse.birt.data.engine.core.DataException.wrap(DataException.java:118) TypeError: Cannot call method "getNames" of null (<inline>#7) at org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3557) ... + There are errors evaluating script "if( !( reportsIterator.hasNext()) ){ return( false ); } var report = reportsIterator.next(); row["Name"] = report; return ( true );": {1}. Error.ScriptEvaluationError ( 1 time(s) )detail : org.eclipse.birt.report.engine.api.EngineException: There are errors evaluating script "if( !( reportsIterator.hasNext()) ){ return( false );}var report = reportsIterator.next();row["Name"] = report;return ( true );":{1}. at ... org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor.handleJS(Dtorg.eclipse.birt.data.engine.core.DataException: A BIRT exception occurred: There are errors evaluating script "__bm_FETCH()":ReferenceError: "reportsIterator" n'est pas défini (<inline>#2). See next exception for more information.There are errors evaluating script "__bm_FETCH()":ReferenceError: "reportsIterator" n'est pas defini (<inline>#2) at org.eclipse.birt.data.engine.core.DataException.wrap(DataException.java:118) at ... + data.engine.BadFetchScriptReturnType
My sysout :
17:10:52,979 WARN [birt] sampleReportList = null 17:10:53,042 ERROR [STDERR] 22 sept. 2009 17:10:53 org.eclipse.birt.report.engine.script.internal.DtEScriptExecutor handleJS ATTENTION: A BIRT exception occurred: There are errors evaluating script "__bm_OPEN()": TypeError: Cannot call method "getNames" of null (<inline>#7). See next exception for more information. There are errors evaluating script "__bm_OPEN()": TypeError: Cannot call method "getNames" of null (<inline>#7) org.eclipse.birt.data.engine.core.DataException: A BIRT exception occurred: There are errors evaluating script "__bm_OPEN()": TypeError: Cannot call method "getNames" of null (<inline>#7). See next exception for more information. There are errors evaluating script "__bm_OPEN()": TypeError: Cannot call method "getNames" of null (<inline>#7) at org.eclipse.birt.data.engine.core.DataException.wrap(DataException.java:118) at org.eclipse.birt.data.engine.script.ScriptEvalUtil.evaluateJSAsExpr(ScriptEvalUtil.java:717) at org.eclipse.birt.data.engine.script.JSMethodRunner.runScript(JSMethodRunner.java:76)
And the open method from my scripted datasource :
importPackage(Packages.org.jboss.seam); importPackage(Packages.org.apache.log4j); sampleReportList = Component.getInstance("sampleReportList", false); logger = Logger.getLogger("com.natixis.birt"); logger.warn("sampleReportList = "+sampleReportList); reportsIterator = sampleReportList.getNames().iterator();