9

実行時に( for )jasper Reportsをロードすることは可能ですか?ResourceBundlei18n

( ) にあるプロパティ ファイルのラベルを使用して、jrxml ファイル (たとえばc:\reports\report.jrxml)からレポートを作成したいと考えています。
c:\messages\report.properties

プロパティファイルがクラスローダーにある例のみを見つけました。

ありがとう

4

2 に答える 2

11

John Ferguson のブログREPORT_RESOURCE_BUNDLEでは、カスタムの ResourceBundle インスタンスでパラメーターをオーバーライドすることが秘訣であると述べています。

// Compiling the report is not a necessary step; prefer using .jasper files
// that have been pre-compiled to avoid this compilation step.
//
JasperDesign jasperDesign = JasperManager.loadXmlDesign("Report.jrxml");
JasperReport jasperReport = JasperManager.compileReport(jasperDesign);

Map parameters = new HashMap();
parameters.put("REPORT_LOCALE",LocaleManager.currentLocale());
parameters.put("REPORT_RESOURCE_BUNDLE",resourceBundle);
Connection conn = DBConnectionFactory.getConnection();
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
                                                       parameters,
                                                       conn);

resourceBundleどこからでも来ることができます。例えば:

try(FileInputStream fis = new FileInputStream("/tmp/report.properties")) {
  ResourceBundle resourceBundle = new PropertyResourceBundle(fis);

  // Pass resourceBundle into the report, as shown above.
}
于 2013-03-11T13:49:43.083 に答える