2010-04-21 15 views
7

Benim .jrxml alanımın, örneğin bir Kişinin, bir rastgele nesnesine parametre olarak geçmek istiyorum.Rasgele bir nesneyi jasper raporuna parametre olarak nasıl geçirebilirim?

<?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> 
... 

bu mümkün gibi bir şey mi:

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); 

Ve .jrxml üzerinde

gibi bir şey mi? Bir java.lang.String dosyasını geçirmekten daha fazlasını gösteren daha karmaşık dersleri nerede bulabilirim?

Teşekkürler

cevap

7

Evet, herhangi bir Java nesnesini geçirebilirsiniz, ancak bu nesneyi JRXML'ye aldığınızdan emin olmalısınız. JasperReport etiketinin içinde

. Ancak

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

Eğer parametreler haritasında keyfi nesneleri depolamak için gerek kalmadan, JRBeanCollectionDataSource kullanabilir ve nesnenin bir liste ile rapor doldurabilirsiniz: Sen gibi etiketi import kullanabilirsiniz.

Kontrol Belirli bir sınıf yolunu ayarlamak istemiyorsanız ne olur Jasper Reports Bean Collection Data Source

+1

Bağlantı bozuk. –

0

Evet, açıkladığınız şekilde mümkündür. Sadece jrxml'yi derlerken doğru sınıf yoluna sahip olduğunuzdan ve büyük/küçük harfle (person) veya büyük harfle (PERSON) her yere dikkat edin.

+0

teşekkür ederiz, daha fazla bilgi için bu öğretici, ben < ".." = ithalat paketinin> gibi .jrxml şey koymak ya da bir şey olabilir Raporun belirli bir sınıfı bulabilmesi için böyle mi? Yardımlarınız için tekrar teşekkürler! –

+0

Bence ithalatı kullanabilirsiniz. Denemenizin başarılı olup olmadığını bildirdiğinizden emin olun. – Bozho

+0

Çok alakalı bir soru, bunu çözebildiniz mi? Tam olarak aynı gereksinimlere bakacak olursak, javascript sunucuya jrxml yüklememiz gerekir ve açıkçası sunucudaki sınıf yoluna bir şey eklemek istemiyoruz (güncellenmesi kolay değil), aynı zamanda rapor biriminin 'unu kullanmak istemiyoruz ama sınıfları doğrudan jrxml'ye içe aktarır. Baska öneri? – Aubergine