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

JSF Java Discussion :

Chemin relatif (FacesContext)


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 30
    Par défaut Chemin relatif (FacesContext)
    Salut tout le monde,

    Je cherche à générer des rapports Jasper depuis mes pages JSF. Mes fichiers *.jasper sont placés dans le répertoire reports (voir l'image attachée). En utilisant un chemin absolu sous Linux j'arrive à générer mon rapport sans problème, mais ce que je cherche à faire c'est d'utiliser un chemin relatif par rapport au répertoire de mon projet. grâce à FacesContext j'ai pu récupérer le chemin de mon projet

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String path = FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath()+"/reports/person.jasper";
    mais même en le concaténant avec le nom de répertoire reports j'obtiens toujours l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.io.FileNotFoundException: /JasperJSF/reports/person.jasper (No such file or directory)
    Images attachées Images attachées  

  2. #2
    Membre expérimenté Avatar de aperrin
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    221
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 221
    Par défaut
    getClass().getClassLoader().getResourceAsStream(
    "person.jasper")

  3. #3
    Membre confirmé Avatar de Rizzen
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 115
    Par défaut
    Le code que j'utilise pour appeler mes .jasper

    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
    final String REPORT_NAME = "test.jasper";
    		final String SUBREPORT_NAME = "classic.jasper";
    		final String PATH = "pages/include/reports/";
     
    		FacesContext context = FacesContext.getCurrentInstance();
    		ServletContext servletContext = (ServletContext)context.getExternalContext().getContext();
     
    		String webRoot = servletContext.getRealPath("/");
     
    		Map parameters = new HashMap();
    		// --- Passage en paramètre des sources de données
    		parameters.put("SOUS_FORMULAIRE", webRoot + PATH + SUBREPORT_NAME);
     
     
    		// --- Remplissage du rapport général :
    		DataSourceHistoriqueBean dts = new DataSourceHistoriqueBean();
     
    		JasperReport jasperReport = (JasperReport)JRLoader.loadObject(webRoot + PATH + REPORT_NAME);
    		JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, parameters, dts.create(null));
     
    		// --- Export au format PDF
    		byte[] bytes = JasperExportManager.exportReportToPdf(jasperPrint);
    		HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
     
    		/***********************************************************************
                     * Pour afficher une boîte de dialogue pour enregistrer le fichier sous
                     * le nom rapport.pdf
                             **********************************************************************/
    		response.addHeader("Content-disposition","attachment;filename=facture" + this.facture.getNumfor() + ".pdf");
    		response.setContentLength(bytes.length);
    		response.getOutputStream().write(bytes);
    		response.setContentType("application/pdf");
    		context.responseComplete();
    		return null;

  4. #4
    Membre éclairé Avatar de maloups
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Une autre piste :

    J'me rappel avoir pas mal lutter la dessus
    Seul solution (pas des plus propre mes fonctionnels) déplacer mes éditions dans un package Java
    Exemple :
    J'ai un package "truc.bidule.muche.rapportJasper"
    Arborescence :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    truc.
      |- bidule
            |- muche
    		|- rapportJasper
    			   |- rapoprt1.jasper
    			    |- rapoort2.jasper
    					  ...
    Pour récupérer l'enplacement en java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    URL urlEditions = 
                this.getClass().getClassLoader().getResource(
                        "truc/bidule/muche/rapportJasper");
     
    String reportDirectory = urlEditions.getPath();
    String reportFileName = "nomDuRapport";
    String cheminCompletRapport = reportDirectory+reportFileName;
    En esperant que ca pourra t'aider...

  5. #5
    Membre averti
    Inscrit en
    Août 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 30
    Par défaut
    Merci pour vos réponses, le problème est résolu en utilisant la méthode proposée par Rizzen

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Raccourci Chemin relatif pour la cible
    Par rabobsky dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 07/11/2005, 13h57
  2. Prb de chemin relatif
    Par hitchie dans le forum MFC
    Réponses: 4
    Dernier message: 10/05/2005, 15h46
  3. [Plugin Tomcat] Chemin relatif
    Par cloogy dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 01/03/2005, 16h26
  4. [XSL-FO] Chemin relatif d'une image
    Par JustAGphy dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 04/08/2004, 13h25
  5. [JSP] Include, problème de chemin relatif
    Par dafly dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 15/04/2004, 14h11

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