IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Jasper Discussion :

Generer un report via spring


Sujet :

Jasper

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2002
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 66
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    patientDashboard.class=com.all4it.forstudy.web.view.JasperReportView
    patientDashboard.url=/WEB-INF/reports/PatientDashboard.jrxml
    Enfin le code de la vue :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre éclairé
    Inscrit en
    Juillet 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 57
    Par défaut
    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).

Discussions similaires

  1. Pb de sous-état Crystal Report via VB net
    Par christellel198 dans le forum SDK
    Réponses: 1
    Dernier message: 15/06/2006, 17h56
  2. [XML]execution d'applet via Spring java 1.4
    Par Arnard dans le forum Spring
    Réponses: 7
    Dernier message: 23/05/2006, 16h14
  3. Réponses: 1
    Dernier message: 09/02/2006, 22h35
  4. Generer un XML via un schema XSD
    Par manu00 dans le forum Valider
    Réponses: 1
    Dernier message: 26/07/2005, 13h34
  5. Generer du xml via SQL(oracle) avec de l'asp
    Par jpg dans le forum XQUERY/SGBD
    Réponses: 6
    Dernier message: 03/08/2004, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo