2014-03-30 45 views
1

導致執行與BIRT測試我能夠創建報告,呈現在PDF行數據,但可惜的是我沒有得到預期的結果。不能使用來自腳本的DataSet

對於我的數據源我創建了一個腳本數據源,並在那裏被不需要的代碼(只要我能看到的文件來實現我想要做的)。

對於我的數據集我創建一個使用我的腳本數據源作爲源的腳本數據集。在那裏,我所定義的腳本開放,如:

importPackage(Packages.org.springframework.context); 
importPackage(Packages.org.springframework.web.context.support); 

var sc = reportContext.getHttpServletRequest().getSession().getServletContext(); 

var spring = WebApplicationContextUtils.getWebApplicationContext(sc); 

myPojo = spring.getBean("myDao").findById(params["pojoId"]); 

而且腳本獲取像:

if(myPojo != null){ 
     row["title"] = myPojo.getTitle(); 
     myPojo = null; 
     return true; 
} 
return false; 

由於row人口將在運行時完成,我無法自動獲得DataSet列,所以我使用以下配置創建了一個:name:columnTitle(因爲這是用於在提取代碼中填充行對象的名稱)。

之後,我編輯了報告的佈局,並將該列添加到了我的佈局中。

我能夠確認spring.getBean("myDao").findById(params["pojoId"]);執行。但我提交的報告沒有顯示標題。如果我在報告佈局上雙擊我的列標籤,我可以看到那裏的表達式是dataSetRow["columnTitle"]是不是?即使我在我的抓取腳本中使用了行?我在這裏錯過了什麼?

回答

0

問題是使用了蠟染兩次(兩個不同的版本),BIRT和其他DOCX4J的依賴。

該問題很難識別,因爲沒有日誌輸出呈現PDF文件。

呈現HTML我可以看到一條錯誤消息,我可以調查並發現問題。

對於我的情況,我可以從maven POM中刪除DocX4j。

1

那麼,什麼是conctractVersion? 顯然,在open事件中未初始化。 應該這樣讀myPojo.contractVersion還是myPojo.getContractVersion()

另一點:DS是否將列「columnTitle」綁定到佈局?

你也應該運行您的HTML或預覽報告以檢查腳本錯誤。 不幸的是,當生成報告爲PDF時,這些內容會被忽略掉...

+0

對不起錯誤的抓取版本,我只是糾正它。我只是把它拖放到佈局上,應該夠了,不是嗎?當在那裏使用'row'變量並且聲明行鍵(在這種情況下是'columnTitle')作爲列輸出時,'fetch'的代碼是正確的嗎? –

+0

您是否以HTML格式運行報告並查找以紅色顯示的Javascript錯誤? – hvb

+0

也許有必要創建一個報表變量來存儲myPojo,在代碼中用vars [「myPojo」]來訪問它,而不僅僅是myPojo。 – hvb