jasper Reports
是否可以在运行时加载ResourceBundle
(i18n
}?
我想从jrxml文件创建报告(例如c:\reports\report.jrxml
)
我的标签位于(c:\messages\report.properties
)的属性文件中。
我只找到了属性文件在类加载器中的示例。
由于
答案 0 :(得分:9)
John Ferguson's blog提到诀窍是使用自定义ResourceBundle实例覆盖REPORT_RESOURCE_BUNDLE
参数。
// 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.
}
答案 1 :(得分:3)
从资源包加载包:
ResourceBundle bundle=ResourceBundle.getBundle("/reports/bundles/bundle",Locale.CANADA_FRENCH);
填写报告::
params.put("REPORT_RESOURCE_BUNDLE", bundle);
JasperPrint jasPrint = JasperFillManager.fillReport(reportStream, params, data);