如何在运行时加载jasperreports resourcebundle?

cre*_*ijn 7 jasper-reports internationalization

是否可以在运行时jasper Reports加载ResourceBundle(for i18n)?

我想从jrxml文件(例如c:\reports\report.jrxml)创建一个报告
,我的标签位于(c:\messages\report.properties)的属性文件中.

我只找到了属性文件在类加载器中的示例.

谢谢

cre*_*ijn 9

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);
Run Code Online (Sandbox Code Playgroud)

resourceBundle可以来自任何地方.例如:

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

  // Pass resourceBundle into the report, as shown above.
}
Run Code Online (Sandbox Code Playgroud)