Как скомпилировать файл Jasper JRXML, содержащий ссылку на адаптер данных веб-сервиса с библиотекой Jasper - PullRequest
0 голосов
/ 16 сентября 2018

Один из моих клиентов создал отчет в Jasper Studio.В отчете он использовал источник данных веб-сервиса, который поставляется с соответствующим адаптером данных.Он использует этот источник данных для запроса RESTful API.Файл jrxml приведен ниже:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Created with Jaspersoft Studio version 6.6.0.final using JasperReports Library version 6.6.0  -->
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Blank_A4" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="6581b4b3-5a83-4a40-b2a1-091d3e949e06">
    <property name="com.jaspersoft.studio.data.defaultdataadapter" value="DataAdapter.xml"/>
    <queryString language="WebServiceQuery">
        <![CDATA[{
  "getparameters" : { },
  "fields" : [ {
    "name" : "commercialCode",
    "expression" : "commercialCode"
  }, {
    "name" : "classification",
    "expression" : "classification"
  } ],
  "options" : {
    "contentType" : "application/json",
    "rootPath" : "_embedded.airportList",
    "baseUrl" : ""
  },
  "headersMap" : { },
  "queryData" : "",
  "GETParameters" : { }
}]]>
    </queryString>
    <field name="commercialCode" class="java.lang.String"/>
    <field name="classification" class="java.lang.String"/>
    <background>
        <band splitType="Stretch"/>
    </background>
    <title>
        <band height="79" splitType="Stretch"/>
    </title>
    <pageHeader>
        <band height="55" splitType="Stretch"/>
    </pageHeader>
    <columnHeader>
        <band height="62" splitType="Stretch"/>
    </columnHeader>
    <detail>
        <band height="125" splitType="Stretch">
            <textField>
                <reportElement x="0" y="20" width="100" height="30" uuid="fed44789-e146-4b33-9f10-2f88eec34e8b"/>
                <textFieldExpression><![CDATA[$F{commercialCode}]]></textFieldExpression>
            </textField>
        </band>
    </detail>
    <columnFooter>
        <band height="45" splitType="Stretch"/>
    </columnFooter>
    <pageFooter>
        <band height="54" splitType="Stretch"/>
    </pageFooter>
    <summary>
        <band height="42" splitType="Stretch"/>
    </summary>
</jasperReport>

В отображенном выше отчете также указан адаптер данных, показанный ниже:

<?xml version="1.0" encoding="UTF-8" ?>
<webServiceDataAdapter class="com.jaspersoft.webservice.data.WebServiceDataAdapterImpl">
<name>Airports</name>
<wsUri>http://localhost:8080/api/airports</wsUri><authType>none</authType><verb>get</verb><language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:java="http://java.sun.com" xsi:type="java:java.lang.String">json</language></webServiceDataAdapter> 

Я не уверен, как составить этот отчетиспользуя отчет Jasper library .Любая помощь будет принята с благодарностью!

1 Ответ

0 голосов
/ 17 сентября 2018

С чистыми JasperReports я думаю, что это невозможно. Существует Источник данных веб-службы расширение для Jaspersoft (Studio, Server, Library).

Мне пока не удалось найти способ использовать его с чистой библиотекой JasperReport. Руководства по установке предназначены только для Studio или Server, и с ними все работает нормально.

Но когда вы загружаете его с этого веб-сайта , у вас также есть папка "JR" с 3 банками, я думаю, они должны содержать классы, обеспечивающие поддержку библиотеки JasperReport

Я думаю, что это должно быть то, что реализует JRDataSource, чтобы передать его JasperFillManager.fillReport (String sourceFileName, параметры карты, источник данных JRDataSource)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...