我使用Eclipse的BIRT通过Java使用org.eclipse.birt.runtime
版本4.4.0
来呈现报告。Eclipse BIRT脚本报告:'无效的JavaScript表达式:dataSetRow'异常
当试图呈现报表,BIRT正在返回:
org.eclipse.birt.data.engine.core.DataException: Invalid Javascript expression: dataSetRow["name"].
(以及类似的用于每个dataSetRow
和row
错误)在IRunAndRenderTask
的.getErrors()
;
该模板可以正常使用BIRT设计器并通过该应用程序进行渲染,但在尝试使用Java进行渲染时会中断。
我在整个网络上做了大量的搜索,很多人都建议在应用程序中存在冲突js.jar
。在我正在处理的应用程序中,情况并非如此。唯一的javascript/rhino实例是通过BIRT导入的实例。
我也尝试以下解决方案:
- 剔除捆绑javascript和Mozilla的
- 更新BIRT导入最新的犀牛/ javascript来
4.4.1
,创造了最新的BIRT设计报表模板 - 降低了报表模板,只显示由DB返回一个值(在这种情况下,经销商的“名称”)
这项目正在使用Maven,并在Tomcat 7中运行 - 使用Java 6.
数据库正在使用mysql。
如果需要,可以提供更多详细信息。
编辑:被这个问题摆弄周围一点点,并发现以下几点:不打数据库精细渲染
- 基本报告 - 甚至JavaScript表达式
- 一旦我尝试从查询中获取数据集,然后抛出Invalid Javascript表达式,例如在模板中的这一部分:
<data id="624"> <property name="dataSet">Dealership</property> <list-property name="boundDataColumns"> <structure> <property name="name">name</property> <text-property name="displayName">name</text-property> <expression name="expression" type="javascript">dataSetRow["name"]</expression> <property name="dataType">string</property> </structure> </list-property> <property name="resultSetColumn">name</property> </data>
- 放置在上面
datasetRow
部分的任何值抛出一个无效的JavaScript错误
- 放置在上面
是否有一个非常简单的报告工作(即只使用标题和简单的动态文本如“Hello”+“world”,而不使用数据库)?您是否尝试在java应用程序中应用两个单独的“运行”和“渲染”任务(这是AFAIK推荐的方法)? – Dominique 2014-11-24 09:18:14
只是尝试这样做: 添加下列行: '<表达式名称= “表达” 类型= “JavaScript的”> “你好” + “世界” +参数[ “testparam”]' 和它呈现细。 我还没有把它分割成'run'和'render',现在我只是做: 'task.run();'' task.close();' 它似乎很好。我会尝试运行然后渲染。 事实上,它没有数据库的工作使我认为,驱动程序正在或什么东西......不知道 - 我已经考虑添加驱动程序(MySQL),但无法找到适当的Maven依赖项。 – kahyoung 2014-11-24 09:46:05
编辑:MYSQL驱动程序似乎工作,因为它实际上击中了我的数据库与正确的查询 – kahyoung 2014-11-24 10:56:35