繁体   English   中英

如何在Jasper服务器上使用XML数据源

[英]How to use xml data source on jasper server

我想在jasper服务器(5.0.0)中使用xml数据源。 Xml文件是在应用程序运行时“即时”创建的,因此不同的报表将具有不同的xml数据源。 我知道jasper服务器没有定义XML数据源,但是我发现创建不包含数据源的报表,然后传递参数XML_FILE-java.io.File将完成工作。 我设法在Java Servlet中做到这一点:

  jasperReport = JasperCompileManager.compileReport("path to jrxml");       
  HashMap map  = new HashMap();
  map.put("XML_FILE", new File(xmlSourceFile));     
  jasperPrint = JasperFillManager.fillReport(jasperReport,map);         
 byte [] o = JasperExportManager.exportReportToPdf(jasperPrint);

但不幸的是,无法在jasper服务器上执行此操作。 我正在使用rest服务运行报表,因此只能使用String参数。 我试图编写一个脚本,将带有xml url的String参数转换为java.io.File

public class XmlScriplet extends JRDefaultScriptlet{
 @Override
 public void beforeReportInit(){
  try {
       String param = (String)this.getParameterValue("fileName");
       HashMap map  = new HashMap();
       map.put("XML_FILE", new File(param));
       this.parametersMap.putAll(map);

  } ...

但这给了我一个空的报告。 先感谢您。

如果您使用的是Jasperreports Server 5.5,则还可以通过简单地将“ net.sf.jasperreports.xml.source”参数传递给报表来传递任何XML资源(静态XML甚至是REST服务)。单元名为“报告”,并且您的xml数据资源位于http://(host):(port)/resource.xml路径中,您可能希望使用Jasper的REST v2 API调用报告,如下所示:

 http://(host):(port)/jasperserver/rest_v2/reports/path/to/your/report/unit/report.html?net.sf.jasperreports.xml.source=http://(host):(port)/resource.xml

为了在报表中具有默认的“ net.sf.jasperreports.xml.source”值,还应该在报表源jrxml的“ parameters”部分中添加以下内容

<parameter name="net.sf.jasperreports.xml.source" class="java.lang.String"> 
    <defaultValueExpression><![CDATA["http://(host):(port)/resource.xml"]]>   </defaultValueExpression>
</parameter>

不要忘记通过添加以下内容来将xpath2查询支持添加到jasperreports服务器:

# addition for xpath2 queries
net.sf.jasperreports.query.executer.factory.xpath2 = net.sf.jasperreports.engine.query.JRXPathQueryExecuterFactory

到应用服务器中已部署目录中的/WEB-INF/classes/jasperreports.properties

有关xml数据源允许使用哪些参数的更多信息,您还可以查看官方文档

JasperSoft Community Wiki有两篇文章,将有助于解释其中的一些细节。

远程XML数据源

在JasperReports服务器中使用XML数据源

您可能需要试验XML_URL参数才能将XML放入报告中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM