【问题标题】:How to use xml data source on jasper server如何在jasper服务器上使用xml数据源
【发布时间】:2013-04-25 23:47:22
【问题描述】:

我想在 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 服务器上执行此操作。我正在使用休息服务来运行报告,所以我只能使用字符串参数。我试图编写一个脚本,将带有 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);

  } ...

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

【问题讨论】:

    标签: jasper-reports jasperserver


    【解决方案1】:

    如果您使用 Jasperreports Server 5.5,您还可以通过简单地将“net.sf.jasperreports.xml.source”参数传递给您的报告来传递任何 XML 资源(是静态 XML 甚至是 REST 服务),并且假设您的报告单元名为“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>
    

    不要忘记通过附加以下内容将 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数据源允许哪些参数,你也可以看看官方documentation

    【讨论】:

      【解决方案2】:

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

      Remote XML Datasource

      Using XML Datasource in JasperReports server

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多