2010-04-21 15 views
7

मैं अपने .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> 
... 

यह संभव तरह कुछ है:

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 पर की तरह कुछ करते हैं? मुझे और जटिल ट्यूटोरियल कहां मिल सकते हैं जो सिर्फ java.lang.String को पार करने से अधिक दिखाते हैं?

धन्यवाद

उत्तर

7

हां, आप किसी भी जावा ऑब्जेक्ट को पास कर सकते हैं, लेकिन आपको जेआरएक्सएमएल में उस ऑब्जेक्ट को आयात करना सुनिश्चित करना चाहिए।

जेस्पर रिपोर्ट टैग के अंदर। ,

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

हालांकि आप JRBeanCollectionDataSource उपयोग करें और अपनी वस्तु की सूची के साथ रिपोर्ट को पॉप्युलेट कर सकते हैं, पैरामीटर मानचित्र में मनमाने ढंग से वस्तुओं को स्टोर करने की जरूरत के बिना: आप की तरह, टैग import उपयोग कर सकते हैं।

चेक पर Jasper Reports Bean Collection Data Source

+1

लिंक टूटा हुआ है। –

0

हां, यह संभव है कि आपने समझाया है। बस सुनिश्चित करें कि आपके पास jrxml संकलित करते समय सही वर्गपथ है और मामले के साथ सावधान रहें - या तो लोअरकेस (person) या अपरकेस (PERSON) सभी स्थानों पर।

+0

धन्यवाद, अगर मैं एक विशेष classpath सेट करने के लिए नहीं करना चाहती क्या अधिक जानकारी के लिए इस ट्यूटोरियल, मैं कुछ की तरह .jrxml कुछ में डाल सकते हैं <आयात पैकेज = ".."> या रिपोर्ट के लिए एक विशेष कक्षा को खोजने में सक्षम होने के लिए? आपकी मदद के लिए फिर से धन्यवाद! –

+0

मुझे लगता है कि आप आयात का उपयोग कर सकते हैं। यह सुनिश्चित करना सुनिश्चित करें कि आपका प्रयास सफल रहा है या नहीं। – Bozho

+0

बहुत प्रासंगिक सवाल, क्या आप इसे हल करने में सक्षम थे? बिल्कुल वही आवश्यकताओं का सामना करना पड़ता है, क्योंकि हमें जेस्पर सर्वर को jrxml अपलोड करने की आवश्यकता है और हम स्पष्ट रूप से सर्वर पर क्लास पथ (अपडेट करने में आसान नहीं) पर कुछ भी जोड़ना नहीं चाहते हैं, साथ ही हम रिपोर्ट यूनिट के का उपयोग नहीं करना चाहते हैं, लेकिन बजाय कक्षाओं को सीधे jrxml में आयात करें। कोई सुझाव? – Aubergine

संबंधित मुद्दे

 संबंधित मुद्दे