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

Struts 1 Java Discussion :

[STRUTS][ACTION]Ecriture d'un PDF dans la response


Sujet :

Struts 1 Java

  1. #1
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut [Résolu][STRUTS][ACTION]Ecriture d'un PDF dans la response
    Bonjour,
    j'ai un service qui écrit dans un OutputStream un PDF, je voudrait que celà soit écrit dans la response (pour afficher ou télécharger le PDF).

    J'ai écrit ce bout de code (inspiré de bout de code mis sur le forum développez), mais celà ne marche pas, une erreur apparait dans une popu dans IE :
    Cannot download 'nomDeMonAction' from 'monServ'.
    Interent explorer was not able to open this website. The requested site is either unavailable or cannot be found ...
    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    response.setContentType("application/pdf");
    response.setHeader("Content-Disposition","attachment; filename=\"ECA" + ECAReference + "\";");    
     
    try 
    { 
    	OutputStream os = response.getOutputStream();
    	orderProcessingService.generatePDFSummary(callerContext,ECAReference,os);
    	os.flush();
    	os.close(); 
    }
    catch (IOException e)
    {}
    return null;
    Si vous ne trouvez pas l'erreur, vous pouvez me donner des pistes :
    - Doit-on obligatoirement préciser la longueur des données que l'on met danbs la response (je ne le fait pas car je ne les connait pas) par response.setLength()
    - Pourquoi il ne reconnait pas mon nom de fichier.

    D'avance merci

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Par défaut
    Je crois qu'il ne faut pas faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    os.flush(); 
    os.close();
    J'ai un blog!

  3. #3
    Expert confirmé

    Avatar de denisC
    Profil pro
    Développeur Java
    Inscrit en
    Février 2005
    Messages
    4 050
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 4 050
    Par défaut
    Il faut définitivement faire un os.close() en fin de transmission. Pour ce qui est du flush, je pense qu'il est inutile juste avant un close, mais pas néfaste.

    Sinon, pas d'autre idée plus précise sur ta question...

    Tu es sur que ta servlet est bien configurée?

  4. #4
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Pour le close et le flush, je pense aussi que celà est bon. Quand à savoir si ma servlet est bien configurée, c'est l'ActionServlet de struts a qui je ne fait aucune configuration particulière!

  5. #5
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Par défaut
    teste quand même sans le fush et le close...

  6. #6
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    déjà fait!

  7. #7
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Par défaut
    Il se peut que tu ais une IOException, tu devrais faire e.printStackTrace() dans ton catch.

    Essaye aussi d'écrire ton os dans un fichier. As-tu testé avec un autre navigateur que IE?

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 28
    Par défaut
    Chez moi ça tourne en faisant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    response.setContentType("application/pdf");
    response.setHeader("Content-disposition", "filename=monFichier");
    ie sans attachment; sans doubles quotes autour du nom du fichier et sans point virgule à la fin. Je me rapelle que la mise au point à été touchy et que le comprortement final dépendait pas mal du type de browser.

  9. #9
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Je n'ai pas d'IEException (je n'ai pas mis le code du catch, mais j'écrit dans des logs toutes les erreurs que j'ai).
    J'ai essayer avec les modification au niveau du "Content-Disposition" mais celà n'a rien changé.

  10. #10
    Invité de passage
    Inscrit en
    Janvier 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1
    Par défaut J'ai trouvé
    Il faut définitivement faire un os.close() en fin de transmission. Pour ce qui est du flush, je pense qu'il est inutile juste avant un close, mais pas néfaste.

    Sinon, pas d'autre idée plus précise sur ta question...

    Tu es sur que ta servlet est bien configurée?

  11. #11
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Problème résolu, j'ai honte, je fesait deux fois l'os.close() car il été déjà fait dans la méthode business que j'appelais.
    Le plus étonnant c'est que aucune exception n'été levé!

    Merci à tout ceux qui m'on aidé.

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

Discussions similaires

  1. Afficher PDF dans une nouvelle page avec Struts
    Par Snyper dans le forum Struts 1
    Réponses: 10
    Dernier message: 14/12/2011, 15h53
  2. [DOM] Java XML Struts et ecriture dans objet response
    Par Tanebisse dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 16/10/2009, 11h36
  3. [Struts-Layout] Disable d'un bouton dans une action
    Par chris78 dans le forum Struts 1
    Réponses: 3
    Dernier message: 02/06/2009, 09h49
  4. Réponses: 0
    Dernier message: 10/08/2008, 22h29
  5. Réponses: 13
    Dernier message: 14/06/2003, 22h15

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