Java Jasper报告-如何更改xpath executer工厂

Java Jasper报告-如何更改xpath executer工厂,java,xpath,report,Java,Xpath,Report,我检查了以下问题,并尝试应用经过验证的答案,但没有注意到报告生成过程中的任何变化 基本上,我想做的是将JasperFillManager的xpath执行器工厂更改为使用Jaxen而不是Xalan,但我似乎不知道应该将下面这行代码放在哪里 DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance(); JRPropertiesUtil.getInstance(context).setP

我检查了以下问题,并尝试应用经过验证的答案,但没有注意到报告生成过程中的任何变化

基本上,我想做的是将JasperFillManager的xpath执行器工厂更改为使用Jaxen而不是Xalan,但我似乎不知道应该将下面这行代码放在哪里

    DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();
    JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory",
                                                      "net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
我的代码块如下所示

private JasperPrint getJasperPrintInstance(JasperReport report) throws JRException, NamingException, SQLException {
    JasperPrint jasperPrint = null;
    DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();
    JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory",
                                                      "net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
    if (dataSource == null) {
        jasperPrint = JasperFillManager.fillReport(report, this.reportParams, connection);
    } else {
        jasperPrint =
            JasperFillManager.fillReport(report, this.reportParams,
                                         new JRBeanCollectionDataSource(getDataSource()));
    }

    return jasperPrint;
}
即使我将“net.sf.jasperreports.engine.util.xml.jaxexpathexecuterfactory”更改为其他任何内容,也不会发生任何变化


您能告诉我我可能做错了什么吗?

发生这种情况是因为您没有使用新创建的
上下文。您需要使用它创建一个
JasperFillManager
实例:

JasperFillManager-JasperFillManager=JasperFillManager.getInstance(上下文)

并将其与实例方法一起使用,而不是像这样的类方法:

jasperPrint=jasperFillManager.fill(report,this.reportParams,connection)