我使用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