我需要使用JasperReports生成包含现有代码的i18n报告(4.7.1最初但与5.6.1相同的问题)。 我做了以下事情:
将JRParameter.REPORT_LOCALE和JRParameter.REPORT_RESOURCE_BUNDLE添加到要传递给JasperFillManager的参数中:
File reportFile = new File(getClass().getResource("/reports").getFile(), report.getReportFileName());
Map<String, Object> fillParams = (Map<String, Object>) report.getFillParameters();
java.util.Locale locale = new java.util.Locale("it");
fillParams.put(JRParameter.REPORT_LOCALE, locale);
String resBundleName = ...
ResourceBundle resBundle = ResourceBundle.getBundle(resBundleName, locale);
fillParams.put(JRParameter.REPORT_RESOURCE_BUNDLE, resBundle);
...
JasperFillManager获取params(带语言环境和资源包)和报告路径:
BeanReport report = (BeanReport) this.report;
Collection<?> beans = report.getBeans();
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(beans);
JasperPrint print = JasperFillManager.fillReport(reportFile.getPath(), fillParams, ds);
...
if (httpSession != null) {
httpSession.setAttribute(ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE, print);
exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI, "ReportImage?image=");
}
exporter是一个JRExporter:
exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);
exporter.setParameter(JRExporterParameter.CHARACTER_ENCODING, "UTF-8");
exporter.exportReport();
找到资源包但我生成的报告仍然包含$ R {}标记而不是本地化文本。
可能缺少什么?
感谢您的帮助!
答案 0 :(得分:0)
我不确定您是否使用JasperReports Server,但如果您对我有用,那就是将我的属性包文件放到../jasperserver-pro/WEB-INF/classes文件夹中。