0
我有一些類,其使用CDI注入豆在他們的干將底層chosenValue
從加載並持續到數據庫的數據源,例如:使用的JasperReports與依靠CDI
class MyBean() {
@Inject
private TranslationBean translationBean;
private String chosenValue;
public void setChosenValue(String c) { chosenValue = c;}
public String getChosenValue() {
return translationBean.getTranslatedValue(chosenValue);
}
}
。
現在我想創建一個JasperReport生成的PDF,其中包括DataSource
等豆類。我打電話給:
JasperFillManager.fillReport("myFile.jasper", new HashMap<String, Object>(), new JRBeanCollectionDataSource(Arrays.asList(myBean));
顯然,來自Weld的錯誤消息最終將是沒有上下文處於活動狀態。
我現在看到兩種可能:
- 創建
MyBean
的包裝類尤其是對JasperReports的在所有需要的領域都充滿了實際數據和不需要CDI的依賴。問題將是:大量的樣板和重複代碼的編碼。 - 以某種方式設法圍繞對
JasperFillManager
的調用打包上下文,以便在當前活動的CDI上下文中運行。
第二個選項可能嗎?除了建議的方法之外,還有其他更好的方法嗎?