salut,

je veux faire tourner un simple exemple de reporting (jasper report) avec une application JEE (faite avec EJB3 et struts2)

j'arrive à faire un code de reporting en java et non pas avec JEE ( avec struts2)

le code en java est :

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
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");
 
	}
avec bien sur importation de lib nécessaire

ce code ca marche parfaitement

j'essaye de faire le changement necessaire pour generer un rapport pdf avec struts2

je cree une class GenererPDF.class
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
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 :

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
<?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>
   <include file="struts-default.xml"/>
     <package name="default" extends="struts-default">
        <action name="generation" method="generer" class="com.test.GenererPDF">
            <result name="success">/index.jsp</result>
        </action>
 
 
     </package>
</struts>
la page Rapport.jsp

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
 
</head>
<body>
<a href="generation.action">click ici pour générer un PDF</a>
 
</body>
</html>
mais lors de l’exécution cette erreur est affichée

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