Intégration struts2 avec jasper reports

alen3 Messages postés 49 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 24 novembre 2012 - 3 avril 2012 à 17:03
alen3 Messages postés 49 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 24 novembre 2012 - 8 avril 2012 à 10:29
salut,

je suis entrain de développer une application JEE avec EJB3 et struts2

et pour le moment je suis entrain de chercher une solution pour générer des rapports sous forme pdf ou word

après recherche sur le net je pense que je dois travailler avec jaserreport
mais je suis débutant avec jasperreport

est ce que quelqu'un pouvez m'aider à savoir comment intégrer cet outil avec une application en struts2

je travail avec ces jars: struts2-core-2.0.6.jar xwork-2.0.1.jar

merci d'avance

9 réponses

cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
4 avril 2012 à 08:05
Bonjour,

Tu peut utiliser cet outil comme dans une application java normale. Même si tu utilises JEE, c'est bien du java qui est exécuté coté serveur.

Tu n'as donc pas de fonctionnement spécifique à JEE. N'importe quel tutoriel sur internet fera l'affaire.

Inclus bien les jars dans le classpath et non dans le dossier lib de WebContent.
0
alen3 Messages postés 49 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 24 novembre 2012
4 avril 2012 à 21:12
merci pour votre réponse

j'essaye de faire tourner un simple code java qui va générer un fichier PDF

voila la méthode qui génère le rapport
public static void generer_rapport(String fileName) throws JRException {
// Le chemin du fichier .JRXML

JasperDesign jasperDesign = JRXmlLoader.load("c:\\test1.jrxml");
JasperReport jasperReport = JasperCompileManager
.compileReport(jasperDesign);
 
Map parameters = new HashMap<String, String>();
parameters.put("titre", "Listing les ");
// - Execution du rapport

// creation du fichier .PDF
JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,
parameters, new JREmptyDataSource());
JasperExportManager.exportReportToPdfFile(jasperPrint,  "c:\"+fileName+".pdf");

}



le fichier test1.jrxml se trouve dans C:

mais cette erreur est affiché

Exception in thread "main" net.sf.jasperreports.engine.JRException: Error compiling report java source files : C:\workspace\Jasper\Rapport_sans32titre_1_1333560094350_987114.java 
at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJavacCompiler.java:89)
at net.sf.jasperreports.engine.design.JRAbstractClassCompiler.compileUnits(JRAbstractClassCompiler.java:63)
at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:188)
at net.sf.jasperreports.engine.JasperCompileManager.compileReport(JasperCompileManager.java:215)
at jasper.PDF.generer_rapport(PDF.java:27)
at jasper.PDF.main(PDF.java:20)
Caused by: java.io.IOException: Cannot run program "javac": CreateProcess error=2, Le fichier spécifié est introuvable
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:466)
at net.sf.jasperreports.engine.design.JRJavacCompiler.compileClasses(JRJavacCompiler.java:58)
... 5 more
Caused by: java.io.IOException: CreateProcess error=2, Le fichier spécifié est introuvable
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(ProcessImpl.java:81)
at java.lang.ProcessImpl.start(ProcessImpl.java:30)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:453)
... 8 more


merci d'avance
0
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 avril 2012 à 08:47
Trouves un ide pour la compilation et ca sera bien plus facile...
0
alen3 Messages postés 49 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 24 novembre 2012
5 avril 2012 à 09:25
vous avez raison le problème est au niveau de jre

il dois être changer par jdk
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Julien39 Messages postés 6414 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 29 juillet 2020 371
5 avril 2012 à 09:38
Déjà, oui, si tu n'as pas de jdk, ca ne peut pas marcher non plus
0
alen3 Messages postés 49 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 24 novembre 2012
5 avril 2012 à 21:26
j'essaye de faire le changement necessaire pour generer un rapport pdf avec struts2

je cree une class GenererPDF.class

package com.test;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
 
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperExportManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.xml.JRXmlLoader;
 
import com.mysql.jdbc.Connection;
import com.mysql.jdbc.Driver;
 
public class GenererPDF {
 
 
 
    	public String generer()
    	{
    		 // - Paramètres de connexion à la base de données
            String url = "jdbc:mysql://localhost/basetest";
            String login = "root";
            String password = "root";
            Connection connection = null;
 
            try {
                // - Connexion à la base
                Driver monDriver = new com.mysql.jdbc.Driver();
                DriverManager.registerDriver(monDriver);
                connection = (Connection) DriverManager.getConnection(url, login, password);
 
                // - Chargement et compilation du rapport
                JasperDesign jasperDesign = JRXmlLoader.load("C://test.jrxml");
                JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
 
                // - Paramètres à envoyer au rapport
                Map parameters = new HashMap();
                parameters.put("Titre", "Titre");
 
                // - Execution du rapport
                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
 
                // - Création du rapport au format PDF
                JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\test.pdf");
            } catch (JRException e) {
 
                e.printStackTrace();
            } catch (SQLException e) {
 
                e.printStackTrace();
            } finally {
                try {
                     connection.close();
                    } catch (SQLException e) {
 
                            e.printStackTrace();
                    }
            }
 
 
       return "success";
 
    }
}



je crée un dossier report sous WebContent et je place le fichier test.jrxml sous ce dossier

mais comme vous voyer dans le code de la class GenererPDF j'essaye d’accéder au fichier test.jrxml qui est placé sous C:

le fichier struts.xml est :

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
   
     
        [generation.action click ici pour générer un PDF]
 

</html>


mais lors de l’exécution cette erreur est affichée

There is no Action mapped for namespace / and action name generation. - [unknown location]
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:186)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:497)
org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:421)


merci d'avance
0
alen3 Messages postés 49 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 24 novembre 2012
6 avril 2012 à 19:30
en faite j'arrive à générer un fichier PDF

mais mon problème actuelle est comment accéder de manière dynamique au fichier test.jrxml qui est placé sous le dossier report

ce dossier (report) est placé sous WebContent

donc grâce a cette manière le fichier test.jrxml devrai être dépend de l'application et non pas de répertoire C:

permet la portabilité de l'application
cette ligne doit être changée

JasperDesign jasperDesign = JRXmlLoader.load("C://test.jrxml");


aussi je veux que le fichier générer qu'il soit ouvrir dans la même fenêtre de la page JSP

je parle de cette ligne
JasperExportManager.exportReportToPdfFile(jasperPrint,  "c:\"+fileName+".pdf");
0
alen3 Messages postés 49 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 24 novembre 2012
7 avril 2012 à 18:39
personne n'a aucune idée sur un accès dynamique à un fichier sous le dossier WebContent
0
alen3 Messages postés 49 Date d'inscription mercredi 4 janvier 2012 Statut Membre Dernière intervention 24 novembre 2012
8 avril 2012 à 10:29
je veux savoir comment faire ouvrir le fichier PDF généré après être enregistrer

c à dire ajouter un code java après les lignes suivantes

// - Execution du rapport
                JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, connection);
 
                // - Création du rapport au format PDF
                JasperExportManager.exportReportToPdfFile(jasperPrint, "C:\\test.pdf");
0
Rejoignez-nous