如何在jasper服务器上使用xml数据源

时间:2013-04-25 23:47:23

标签: jasper-reports jasperserver

我想在jasper服务器(5.0.0)中使用xml数据源。创建Xml文件"即时#34;当应用程序运行时,不同的报告将具有不同的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参数。我曾尝试编写一个将String参数和xml url一起转换为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);

  } ...

但是这给了我一个空的报告。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

您也可以通过简单的" net.sf.jasperreports.xml.source"传递任何XML资源(是静态XML甚至是REST服务)。报告的参数,如果您使用的是Jasperreports Server 5.5,并假设您的报告单位名为" report"并且您的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中的部分

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

不要忘记通过附加添加xas2查询支持到jasperreports服务器:

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

到appserver中已部署目录内的/WEB-INF/classes/jasperreports.properties

有关xml数据源允许的参数的更多信息,您还可以查看官方documentation

答案 1 :(得分:1)

JasperSoft社区维基有两篇文章可以帮助解释一些细节。

Remote XML Datasource

Using XML Datasource in JasperReports server

您可能需要尝试使用XML_URL参数将XML纳入报告。