JasperReports本地化

时间:2012-07-10 11:29:23

标签: java jasper-reports

我正在使用 JasperReports 并想要生成不同语言的报告,但是出现了问题。

这是我的代码

public void initQueryReport() throws JRException, ParseException {
    try {
        Map param = new HashMap();
        param.put("DATE", date2);
        fill1 = JasperFillManager.fillReport(
                "E:\\jasper reports\\employees.jasper", param, connection);
    } catch (Exception e) {
        System.out.println();
    }
}

ServletResponse respnce;
HttpServletResponse respons;

public void PDFQuery(ActionEvent event) throws JRException, IOException, ParseException {
    try {
        initQueryReport();
        respnce = (ServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        respons = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
        respons.setContentType("application/pdf");
        respons.setHeader("Content-Disposition", "inline");
        respons.setContentType("application/pdf");
        ServletOutputStream out = respnce.getOutputStream();
        JRPdfExporter pdf = new JRPdfExporter();
        pdf.setParameter(JRExporterParameter.JASPER_PRINT, fill1);
        pdf.setParameter(JRExporterParameter.OUTPUT_STREAM, out);

        pdf.exportReport();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

我创建了一个名为 localizationdemo.prperties 的属性文件,其中包含我想要的语言,并将此文件放在 src < / em>文件夹。

当我运行应用程序并单击生成报告的链接时,出现以下异常:

net.sf.jasperreports.engine.JRException: No input source supplied to the exporter

注意当我在调试模式下运行应用程序时,我有以下异常详细信息:

java.util.missingresourceexception can't find bundle for base name locale en_us

请帮我解决这个问题。而且很多

2 个答案:

答案 0 :(得分:1)

您确定已在.jrxml文件中设置资源包属性,因为您似乎没有在java文件中设置它吗?

如果您正在使用Jaspersoft Studio:在Jaspersoft Studio中单击大纲中的报告名称,然后从属性视图菜单中选择“报告”并检查如果在子菜单'Dataset'下,Resource Bundle(localizationdemo)的属性已设置为相应的属性文件。

您也可以在源视图中查看它,它应该是这样的:

<jasperReport /*****/ resourceBundle="localizationdemo" /****/>

更多信息:http://www.tutorialspoint.com/jasper_reports/jasper_Internationalization.htm

答案 1 :(得分:0)

你正在使用Spring frameWork吗?可能是你在spring.xml中使用 ResourceBundleViewResolver 。您必须将路径 localizationdemo.properties 放在basename属性值中。在spring.xml中查看以下代码:

class="org.springframework.web.servlet.view.ResourceBundleViewResolver"

property name="basename" value="config/jasperreports-views" 

在我的情况下,我使用了spring 3.0