Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Jasper
Jasper Forum d'entraide sur Jasper Reports. Avant de poster --> FAQ Jasper, Tutoriels Jasper
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2007, 17h43   #1
Membre à l'essai
 
Inscription : juillet 2002
Messages : 66
Détails du profil
Informations forums :
Inscription : juillet 2002
Messages : 66
Points : 22
Points : 22
Par défaut Generer un report via spring

Bonjour à tous,

je dispose d'un rapport Jasper au format jrxml. Celui-ci contient la requête à executer en base.

J'ai plusieurs solutions pour implementer ma solution :

passer par un controlleur, executer moi même la requête et envoyer le résultat dans le model pour rediriger dans une vue qui m'affichera le rapport. Mais je ne veux pas utiliser cette solution à cause de choix techniques dont je ne ferais pas le détail içi.

J'ai donc trouvé la solution de récupérer une connection du pool, de générer le rapport et de récuperer un objet de type JasperPrint.

Ensuite je voudrais que le controlleur me redirige vers une vue que j'ai crée et qui hérite de : JasperReportsMultiFormatView pour envoyer dans l'objet response le rapport généré.

Alors pour le moment cela fonctionne plus ou moins bien, mon rapport se génére, je redirige vers la vue et le rapport s'affiche en HTML comme je l'ai demandé. Le problème est qu'au niveau de la génération, il n'arrive pas à afficher des images ... pourtant je n'ai pas d'images dans mon rapport.

Voici le code que j'utilise :

Au niveau du controlleur :

Code :
1
2
3
4
5
6
7
8
 
 
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
 
		model.put("jasperPrint", jasperPrint);
		JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(new ArrayList());
		model.put("ds",ds);
		return new ModelAndView("patientDashboard", model);
Le fichier views.properties (qui définit ma vue)

Code :
1
2
patientDashboard.class=com.all4it.forstudy.web.view.JasperReportView
patientDashboard.url=/WEB-INF/reports/PatientDashboard.jrxml
Enfin le code de la vue :

Code :
1
2
3
4
5
6
7
8
9
 
JasperPrint jasperPrint = (JasperPrint)model.get("jasperPrint");
 
		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
		exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, out);
 
		exporter.exportReport();
Le code du fichier jrxml (j'ai retiré la declaration de la requète en base)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
<?xml version="1.0" encoding="UTF-8"?>
<!-- Created using an evaluation version of JasperAssistant (http://www.jasperassistant.com) -->
<!DOCTYPE jasperReport PUBLIC "-//JasperReports//DTD Report Design//EN" "http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
 
<jasperReport name="Unnamed" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="30" bottomMargin="30">
	<property name="com.jasperassistant.designer.Grid" value="false"/>
	<property name="com.jasperassistant.designer.SnapToGrid" value="false"/>
	<property name="com.jasperassistant.designer.GridWidth" value="12"/>
	<property name="com.jasperassistant.designer.GridHeight" value="12"/>
	<property name="com.jasperassistant.designer.VGuides.Column Header" value="28"/>
	<property name="com.jasperassistant.designer.VGuides.Detail" value="28"/>
	<property name="com.jasperassistant.designer.DataSource" value="oracle.jdbc.driver.OracleDriv"/>
	<field name="CTNSER" class="java.math.BigDecimal"/>
	<field name="CTSER" class="java.math.BigDecimal"/>
	<field name="SITEID" class="java.lang.String"/>
	<field name="USUBJID" class="java.lang.String"/>
	<title>
		<band height="39">
			<textField>
				<reportElement x="159" y="0" width="240" height="25"/>
				<textElement textAlignment="Center">
					<font fontName="Arial" size="18" isBold="true"/>
				</textElement>
				<textFieldExpression class="java.lang.String"><![CDATA["Dashboard Patient Report"]]></textFieldExpression>
			</textField>
		</band>
	</title>
	<columnHeader>
		<band height="35">
			<elementGroup>
				<textField>
					<reportElement mode="Opaque" x="146" y="9" width="80" height="20" backcolor="#FFFFAA"/>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Garamond" size="12" isBold="true" pdfFontName="Helvetica"/>
					</textElement>
					<textFieldExpression class="java.lang.String"><![CDATA["SITEID"]]></textFieldExpression>
				</textField>
				<textField>
					<reportElement mode="Opaque" x="6" y="9" width="128" height="20" backcolor="#FFFFAA"/>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Garamond" size="12" isBold="true" pdfFontName="Helvetica"/>
					</textElement>
					<textFieldExpression class="java.lang.String"><![CDATA["USUBJID"]]></textFieldExpression>
				</textField>
				<textField>
					<reportElement mode="Opaque" x="246" y="9" width="79" height="20" backcolor="#FFFFAA"/>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Garamond" size="12" isBold="true" pdfFontName="Helvetica"/>
					</textElement>
					<textFieldExpression class="java.lang.String"><![CDATA["CTSER"]]></textFieldExpression>
				</textField>
				<textField>
					<reportElement mode="Opaque" x="351" y="9" width="80" height="20" backcolor="#FFFFAA"/>
					<textElement textAlignment="Center" verticalAlignment="Middle">
						<font fontName="Garamond" size="12" isBold="true" pdfFontName="Helvetica"/>
					</textElement>
					<textFieldExpression class="java.lang.String"><![CDATA["CTNSER"]]></textFieldExpression>
				</textField>
			</elementGroup>
		</band>
	</columnHeader>
	<detail>
		<band height="31">
			<elementGroup>
				<textField>
					<reportElement x="153" y="9" width="72" height="20"/>
					<textElement/>
					<textFieldExpression class="java.lang.String"><![CDATA[$F{SITEID}]]></textFieldExpression>
				</textField>
				<textField>
					<reportElement x="16" y="9" width="118" height="20"/>
					<textElement/>
					<textFieldExpression class="java.lang.String"><![CDATA[$F{USUBJID}]]></textFieldExpression>
				</textField>
			</elementGroup>
			<textField>
				<reportElement x="247" y="9" width="80" height="20"/>
				<textElement textAlignment="Right"/>
				<textFieldExpression class="java.math.BigDecimal"><![CDATA[$F{CTSER}]]></textFieldExpression>
			</textField>
			<textField>
				<reportElement x="350" y="9" width="80" height="20"/>
				<textElement textAlignment="Right"/>
				<textFieldExpression class="java.math.BigDecimal"><![CDATA[$F{CTNSER}]]></textFieldExpression>
			</textField>
		</band>
	</detail>
</jasperReport>
Le problème principal est qu'au niveau de la génération, apparemment le navigateur n'arrive pas à afficher d'images pourtant je n'en ai pas dans mon rapport.

Le 2ème problème que j'ai (j'ai contourné l'erreur mais je ne trouve pas cela élégant) est que pour la redirection du controlleur vers la vue, il me faut passer une datasource même vide pour eviter une erreur de jasper me disant qu'il ne trouve pas de datasource dans le model pour le rapport.

Pour le moment je met une datasource vide et ca passe.

Donc je cherche une solution pour avoir un affichage correct de mon rapport.
Dans un 2ème temps peut être une meilleure solution d'implémentation de mon rapport.

Si vous avez des questions pour plus de clartée, n'hésitez pas.

Merci
partyboy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 13h40   #2
Membre du Club
 
Inscription : juillet 2006
Messages : 57
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 57
Points : 57
Points : 57
Citation:
Envoyé par partyboy

Le problème principal est qu'au niveau de la génération, apparemment le navigateur n'arrive pas à afficher d'images pourtant je n'en ai pas dans mon rapport.
Si tu n'as pas d'images dans ton rapport, quelles images voudrais-tu que le navigateur affiche? Je comprends pas bien là...

Citation:
Envoyé par partyboy

Le 2ème problème que j'ai (j'ai contourné l'erreur mais je ne trouve pas cela élégant) est que pour la redirection du controlleur vers la vue, il me faut passer une datasource même vide pour eviter une erreur de jasper me disant qu'il ne trouve pas de datasource dans le model pour le rapport.

Pour le moment je met une datasource vide et ca passe.
D'aprés mes souvenirs, le passage d'une datasource même vide est obligatoire, l'objet JREmptyDatasource est là pour ça (je ne sais pas quand tu parles de datasource vide si tu utilises déjà cet objet ou si tu l'as créé toi même).
Lawmoon est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h01.


 
 
 
 
Partenaires

Hébergement Web