ゲッターで CDI インジェクション Bean を使用するクラスがいくつかあります。
class MyBean() {
@Inject
private TranslationBean translationBean;
private String chosenValue;
public void setChosenValue(String c) { chosenValue = c;}
public String getChosenValue() {
return translationBean.getTranslatedValue(chosenValue);
}
}
基礎となるchosenValue
ものはデータベースからロードされ、データベースに永続化されます。
今、私は JasperReport で生成された PDF を のような Bean で作成したいと考えていますDataSource
。電話する:
JasperFillManager.fillReport("myFile.jasper", new HashMap<String, Object>(), new JRBeanCollectionDataSource(Arrays.asList(myBean));
明らかに、Weld からのエラー メッセージは、最終的にアクティブなコンテキストがないというものになります。
私は今、2つの可能性を見ています:
MyBean
必要なすべてのフィールドに実際のデータが入力され、CDI 依存関係が不要な JasperReports用のラッピング クラスを作成します。問題は次のとおりです。多くのボイラープレートと繰り返しコードを含む大量のコーディング。JasperFillManager
現在のアクティブな CDI コンテキスト内で実行されるように、何らかの方法で への呼び出しの周りにコンテキストをラップすることができます。
2番目のオプションは可能でしょうか? 提案された方法よりも優れた方法はありますか?