Eclipse BIRT脚本报告:'无效的javascript表达式:dataSetRow'异常

时间:2014-11-24 07:19:53

标签: java eclipse maven birt

我使用Eclipse的BIRT通过Java使用org.eclipse.birt.runtime版本4.4.0呈现报告。

尝试呈现报告时,BIRT正在返回:

org.eclipse.birt.data.engine.core.DataException: Invalid Javascript expression: dataSetRow["name"].  (以及dataSetRow的{​​{1}}中的row.getErrors()}的类似错误;

模板可以使用BIRT设计器并通过该应用程序进行渲染,但在尝试使用Java渲染时会中断。

我在整个网络上进行了广泛的搜索,很多人都建议应用程序中存在冲突的IRunAndRenderTask。在我正在开发的应用程序中并非如此。唯一的javascript / rhino实例是通过BIRT导入的实例。

我还尝试了以下解决方案:

  • 排除捆绑的JavaScript并从Mozilla导入最新的Rhino / javascript
  • 将BIRT更新为js.jar并使用最新的BIRT设计器创建报告模板
  • 将报告模板降级为仅显示数据库返回的一个值(在本例中为经销商的“名称”)

这个项目正在使用Maven,并且正在使用Java 6在Tomcat 7中运行。

数据库正在使用mysql。

如果需要,可以提供更多详细信息。


编辑:稍微解决了这个问题并找到了以下内容:

  • 没有点击数据库的基本报告可以很好地渲染 - 甚至是javascript表达式
  • 一旦我尝试从查询中获取数据集,则会抛出无效的Javascript表达式,例如在模板的此部分中:4.4.1
    • 上述<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>部分中的任何值都会引发无效的Javascript错误

2 个答案:

答案 0 :(得分:0)

我认为这可能是由maven存储库的birt pom.xml中的版本问题引起的。在这个版本中,我遇到了很多关于Maven的麻烦。

您应该尝试这样做:在项目中将BIRT maven依赖项设置为“已提供”,并从official Eclipse birt-runtime 4.4.0 package向您的应用添加“手动”所有jar。例如,在我这边我在Netbeans中创建了一个自定义的本地Maven依赖来处理这个并且它工作得很好。我希望它会有所帮助。

答案 1 :(得分:0)

发现这个问题出了什么问题。

我们正在使用Maven并决定检查是否存在冲突库。

我们找到了一个:Apache.FOP。

接下来,Birt在那之后工作得很好。