Как да използвате xml източник на данни на jasper сървър

Бих искал да използвам xml източник на данни в jasper server (5.0.0). 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. Използвам услуги за почивка, за да изготвя отчет, така че мога да използвам само параметри на низ. Опитах се да напиша скриптлет, който преобразува 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);

  } ...

но това ми дава празен отчет. Благодаря ви предварително.


person user1509254    schedule 25.04.2013    source източник


Отговори (2)


Можете също така да предадете всеки XML ресурс (да бъде статичен XML или дори REST услуга), като предадете просто параметър "net.sf.jasperreports.xml.source" към вашия отчет, ако използвате Jasperreports Server 5.5 и приемете вашия отчет единица се нарича „отчет“ и вашият xml ресурс с данни е в http://(host):(port)/resource.xml път, може да искате да извикате отчета с помощта на REST v2 API на Jasper по следния начин:

 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 данни, можете също да разгледате официалния документация

person kreig    schedule 29.04.2014

Уикито на общността на JasperSoft има две статии, които ще ви помогнат да обясните някои от подробностите.

Отдалечен източник на XML данни

Използване на XML източник на данни в сървъра на JasperReports

Може да се наложи да експериментирате с параметъра XML_URL, за да включите своя XML в отчета.

person Rob Miroballi    schedule 10.07.2013