Jasper Report avec Struts 2
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:
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:
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:
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:
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:
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