Как я могу передать произвольный объект отчету о яшме как параметр?

Я хотел бы передать в качестве параметра моему .jrxml произвольный объект своего домена, например, Человека.

InputStream reportFile = MyPage.this.getClass().getResourceAsStream("test.jrxml");
HashMap<String, Person> parameters = new HashMap<String, Person>();
parameters.put("person", new Person("John", "Doe"));
...
JasperReport report = JasperCompileManager.compileReport(reportFile);
JasperPrint print = JasperFillManager.fillReport(report, parameters, new JREmptyDataSource());
return JasperExportManager.exportReportToPdf(print);

И на .jrxml делают что-то как:

<?xml version="1.0" encoding="UTF-8"?>
<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="test" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20">
 <property name="ireport.zoom" value="1.0"/>
 <property name="ireport.x" value="0"/>
 <property name="ireport.y" value="0"/>
 <parameter name="PERSON" isForPrompting="false" class="myApp.domain.person"/>
 <background>
  <band splitType="Stretch"/>
 </background>
 <title>
  <band height="20">
       <staticText>
         <reportElement x="180" y="0" width="200" height="20"/>
         <text><![CDATA[$P{PERSON.lastName}]]></text>
       </staticText>
     </band>
 </title>
...

Действительно ли что-то вроде этого возможно? Где я могу найти более сложные учебные руководства, которые показывают больше, чем просто передача java.lang. Строка?

Спасибо

9
задан 21 April 2010 в 14:53
поделиться

2 ответа

Да, вы можете передать любой объект Java, но вы должны обязательно импортировать этот объект в JRXML.

Внутри тега jasperReport. Вы можете использовать тег import , например:

 <jasperReport...>
      <import value="org.justfortest.Person">

Однако вы можете использовать JRBeanCollectionDataSource и заполнить отчет списком ваших объектов без необходимости хранить произвольные объекты в параметрах. карта.

Обратитесь к этому руководству для получения дополнительной информации о источнике данных коллекции компонентов Jasper Reports

11
ответ дан 4 December 2019 в 20:22
поделиться

Да, это возможно именно так, как вы объяснили. Просто убедитесь, что у вас есть правильный путь к классам при компиляции jrxml, и будьте осторожны с регистром - строчными буквами ( person ) или прописными буквами ( PERSON ) во всех местах.

0
ответ дан 4 December 2019 в 20:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: