JasperReport Detail bringt null bei Datenübergabe

Status
Nicht offen für weitere Antworten.

Azrahel

Bekanntes Mitglied
Hallo Leute

Ich hab ein kleines Problem an dem ich nun schon 2 Tage kaue, und zwar will ich Reporte generieren. Mit Jasper. Schön und gut, gibt ja auch nen schönen Reportdesigner (IReport) dazu. Kompiliert auch wunderbar, das einlesen klappt und die PDF-Datei wird auch generiert, nur in der erzeugten PDF bekomme ich für hash immer null. Ich hab mich schon gebogen, gedreht und gegoogelt, aber auf die Lösung bin ich nicht gekommen.

Die Daten Übergebe ich dabei so:

Code:
	public void doReport() {
		HashMap parameter = new HashMap(); 
		parameter.put("param", "param");

    	//Prodmittelkopf
		ArrayList<HashMap> al = new ArrayList<HashMap>();
		HashMap<String,String> hm;
		hm = new HashMap<String, String>();
		hm.put("hash", "hash");
		al.add(hm);
		
		try {
			JRMapCollectionDataSource ds = new JRMapCollectionDataSource(al);
			File reportfile = new File(e.getPath()+"/classes/programme/difzep/zeafeik/zeafeik.jasper"); 
			JasperReport jasperReport = (JasperReport) JRLoader.loadObject(reportfile.getAbsolutePath()); 
			JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameter, ds);
		    JasperExportManager.exportReportToPdfFile(jasperPrint, "C:/Dokumente und Einstellungen/User/Desktop/zeafeik.pdf");
		}catch (JRException e) {
		    e.printStackTrace();
		}
    	
    	
	}


Den Code hab ich von der Webseite hier:

www.alexander-merz.com/46.html

und hier der von IReport erzeugte jxrml-code

Code:
<?xml version="1.0" encoding="UTF-8"  ?>

<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
		 name="zeafeik"
		 columnCount="1"
		 printOrder="Vertical"
		 orientation="Portrait"
		 pageWidth="595"
		 pageHeight="842"
		 columnWidth="535"
		 columnSpacing="0"
		 leftMargin="30"
		 rightMargin="30"
		 topMargin="20"
		 bottomMargin="20"
		 whenNoDataType="NoPages"
		 isTitleNewPage="false"
		 isSummaryNewPage="false">
	<property name="ireport.scriptlethandling" value="2" />
	<property name="ireport.encoding" value="UTF-8" />
	<import value="java.util.*" />
	<import value="net.sf.jasperreports.engine.*" />
	<import value="net.sf.jasperreports.engine.data.*" />

	<parameter name="hash" isForPrompting="false" class="java.lang.String"/>
	<parameter name="param" isForPrompting="false" class="java.lang.String"/>

		<background>
			<band height="0"  isSplitAllowed="true" >
			</band>
		</background>
		<title>
			<band height="50"  isSplitAllowed="true" >
				<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						x="39"
						y="19"
						width="123"
						height="15"
						key="param"/>
					<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
					<textElement>
						<font/>
					</textElement>
				<textFieldExpression   class="java.lang.String"><![CDATA[$P{param}]]></textFieldExpression>
				</textField>
			</band>
		</title>
		<pageHeader>
			<band height="50"  isSplitAllowed="true" >
			</band>
		</pageHeader>
		<columnHeader>
			<band height="30"  isSplitAllowed="true" >
			</band>
		</columnHeader>
		<detail>
			<band height="100"  isSplitAllowed="true" >
				<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now" hyperlinkType="None"  hyperlinkTarget="Self" >
					<reportElement
						x="37"
						y="24"
						width="123"
						height="15"
						key="hash"/>
					<box topBorder="None" topBorderColor="#000000" leftBorder="None" leftBorderColor="#000000" rightBorder="None" rightBorderColor="#000000" bottomBorder="None" bottomBorderColor="#000000"/>
					<textElement>
						<font/>
					</textElement>
				<textFieldExpression   class="java.lang.String"><![CDATA[$P{hash}]]></textFieldExpression>
				</textField>
			</band>
		</detail>
		<columnFooter>
			<band height="30"  isSplitAllowed="true" >
			</band>
		</columnFooter>
		<pageFooter>
			<band height="50"  isSplitAllowed="true" >
			</band>
		</pageFooter>
		<lastPageFooter>
			<band height="50"  isSplitAllowed="true" >
			</band>
		</lastPageFooter>
		<summary>
			<band height="50"  isSplitAllowed="true" >
			</band>
		</summary>
</jasperReport>

Für Anregungen und Kritik, und vielleicht nen Lösungsansatz wär ich echt dankbar :)
 

DP

Top Contributor
keine ahnung, ich fülle meine reports immer mit beans.

ich tippe mal nach dem überfliegen dass

Code:
<parameter name="hash" isForPrompting="false" class="java.lang.String"/>

falsch ist, da er hier einen string erwartet. das musst du (wohl) als hashmap deklarieren.
 

Azrahel

Bekanntes Mitglied
Hmm ich denk nicht das es daran hängt, weil der Parameter "param" wird angezeigt, nur was ich als HashMap über die ArrayList in den Report reinschubse kommt als null an.

Ich habs einfach mal versucht und hab die Zeile in
Code:
<parameter name="HashMap" isForPrompting="false" class="java.lang.String"/>
umgebaut, ergebniss ist das selbe :-/

Aber danke für die Mühe :), wenn ich rausfinde was es ist poste ichs hier.
 

Azrahel

Bekanntes Mitglied
Sag mal kannste hier mal bitte so ne bean posten? vielleicht hilft mir das ja weiter :), mir wärs nen Versuch auf jeden Fall wert.
 
Schau mal genau hin, du übergibst Inhalte einmal per Parameter und einmal per Datenquelle:

Code:
...
parameter.put("param", "param");
...
hm.put("hash", "hash"); 
al.add(hm);
...
JRMapCollectionDataSource ds = new JRMapCollectionDataSource(al); 
...
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameter, ds);

In der Report-Vorlage selbst sagst du dann aber folgendes:

Code:
<parameter name="hash" isForPrompting="false" class="java.lang.String"/>
<parameter name="param" isForPrompting="false" class="java.lang.String"/>

Dabei ist "hash" gar kein Parameter, sondern der Name eines Feldes in der Datenquelle. Na macht es jetzt klick?
Und ja, das

Code:
<![CDATA[$P{hash}]]>

musst du demzufolge auch umbauen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T JasperReport Hintergrundfarbe wertabhängig ändern Allgemeine Java-Themen 3
H JasperReport: Parameter befüllen Allgemeine Java-Themen 7
J Swing Frame schließt ganzes Programm(Jasperreport) Allgemeine Java-Themen 6
N JasperReport FileNotFoundException Allgemeine Java-Themen 4
R JasperReport bleibt leer Allgemeine Java-Themen 3
R JasperReport Allgemeine Java-Themen 2
Y JasperReport - Seitennummern Problem Allgemeine Java-Themen 9
Y JasperReport - PDF sofort anzeigen Allgemeine Java-Themen 4
Y JasperReport - SubReport wird nicht angezeigt Allgemeine Java-Themen 13
hdi Detail-Frage zur for-Schleife Allgemeine Java-Themen 9
G JavaDoc: Spezielle Beschreibung nur in Method Detail Allgemeine Java-Themen 5
OnDemand XML desializing Attribute bringt nicht erwartetes Ergebnis Allgemeine Java-Themen 16
K Anwendung bringt JAVA Speicherfehler Allgemeine Java-Themen 11
K Erhöhung Java Heap Space in Netbeans 6.5 - funktioniert nicht oder bringt nichts? Allgemeine Java-Themen 1
G Bringt es etwas System.gc() nach großen Aufgaben aufzurufen? Allgemeine Java-Themen 2
R Thread-Problem, und synchronized bringt nix Allgemeine Java-Themen 4
G Split String Array bringt Fehlermeldung Allgemeine Java-Themen 7
S eclipse start bringt fehler Allgemeine Java-Themen 2

Ähnliche Java Themen


Oben