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

Servlets/JSP Java Discussion :

HttpServletResponse : bouton annuler d'un enregistrement de fichier


Sujet :

Servlets/JSP Java

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut HttpServletResponse : bouton annuler d'un enregistrement de fichier
    Bonjour,

    J'ai une action qui fait écrit certaines données dans un fichier Excel puis ensuite fait d'autres actions (sauf si des exceptions ont été levées pour l'écriture de ce fichier).

    Seul problème : si l'utilisateur clique sur le bouton annuler, le reste des traitements de mon action sont quand-même effectués puisque je ne sais pas intercepter le clic sur ce bouton.

    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
    File fTemp = new File(servFileName);
    response.setHeader("Content-length", "" + fTemp.length());
    response.setHeader("Content-disposition", "attachment; filename=\"" + "myFic_"  + sNow + ".xls" + "\"");
    response.setContentType("application/x-msdownload");
    response.setHeader("Pragma", "public");
    response.setHeader("Cache-control", "must-revalidate");
     
    int count;
    int countTotal = 0;
    byte buf[] = new byte[4096];
    BufferedInputStream is = new BufferedInputStream(new FileInputStream(fTemp));
    out = response.getOutputStream();
    while ((count = is.read(buf)) > -1) {
    countTotal += count;
    out.write(buf, 0, count);
    }
    if (countTotal > 0) {
    out.flush();
    out.close();
    }
    is.close();
    Merci.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    OK
    Sinon vous savez où je peux trouver la liste des content type pour changer de boîte de dialogue (je vais devoir en prendre une sans bouton annuler par exemple)...

  3. #3
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    La boite de dialogue apparait chez l'utilisateur APRES que le serveur aie commencé à envoyer la réponse, donc non il n'y a pas d'interception possible.

    Changer le content type ne changera rien, la boite est sous controlle exclusif du navigateur. En fait, tu lui envoie un fichier, le navigateur doit décider quoi en faire. Certains sont configuré pour afficher directement la réponse, d'autres pour demander à l'utilisateur si il veux afficher, sauvegarder ou annuler.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Changer le content type ne changera rien, la boite est sous controlle exclusif du navigateur. En fait, tu lui envoie un fichier, le navigateur doit décider quoi en faire. Certains sont configuré pour afficher directement la réponse, d'autres pour demander à l'utilisateur si il veux afficher, sauvegarder ou annuler.

    Hum, c'est pour ça que quand je change par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setContentType("application/vnd.ms-excel");
    Ca change de fenêtre sous IE (ça m'ouvre directement le fichier) mais pas sous Firefox

    Quelle est la vraie solution universelle alors?

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    la solution universelle à quoi? Qu'est-ce que tu cherche à faire? Je t'ai dit, la boite de dialogue pour gérer les fichiers non html, tu n'y a pas accès.
    Si tu veux indiquer au browser qu'il est préférable d'afficher dans la fenetre plutot que d'ouvrir en externe, il y a le content-disposition:inline, mais ça reste une simple indication non contraignante.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Si tu veux indiquer au browser qu'il est préférable d'afficher dans la fenetre plutot que d'ouvrir en externe, il y a le content-disposition:inline, mais ça reste une simple indication non contraignante.
    J'ai essayé d'ajouter inline, pas d'effet; j'ai peut-être pas compris comment l'utiliser.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setHeader("Content-disposition:inline", "attachment; filename=\"" + "myFic_"  + sNow + ".xls" + "\"");

    Citation Envoyé par tchize_ Voir le message
    Qu'est-ce que tu cherche à faire?
    Action de sélectionner plusieurs lignes d'un tableau puis "GO"
    a)conditions incorrectes de sélection des ordre ou pb dans la création du fichier Excel --> retour vers la page avec les erreurs
    b)choix OK : fichier Excel créé et proposé à l'utilisateurs puis actions de changement de statut des lignes (et c'est ça qu'il ne faudrait pas faire si l'utilisateur a choisi de cliquer sur le bouton "Annuler" qu'on est malheureusement forcé de lui proposer).

    Note : J'aurais malgré tout bien aimé qu'on suggère (puisque j'ai comprs que le navigateur peut faire ce qui lui chante) une ouverture directe du fichier...

  7. #7
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par stof Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setHeader("Content-disposition:inline", "attachment; filename=\"" + "myFic_"  + sNow + ".xls" + "\"");
    Non, c'est inline, pas attachement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setHeader("Content-disposition","inline");
    Pour a, je suppose que tu y arrive.
    Pour b, on a dit, pas possible de détecter le annuler. A partir du moment où tu as commencé à envoyer le fichier, tu dois considérer que l'utilisateur en fait ce qu'il veux sans que tu puisse rien y faire.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    A partir du moment où tu as commencé à envoyer le fichier, tu dois considérer que l'utilisateur en fait ce qu'il veux sans que tu puisse rien y faire.
    Va expliquer ça au métier qui croit annuler son action

    Sinon vu pour le "inline" :
    problème1 : ça ouvre le fichier à la place de la fenêtre en cours
    problème2 : si j'essaie d'enregistrer le fichier Excel sur mon poste et de l'ouvrir ensuite avec Excel, c'est buggué (je vois le contour du logiciel Excel avec l'intérieur vide)

  9. #9
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    afficher un fichier, c'est un téléchargement, pas une action. Si tu veux séparer l'action du téléchargement, il te faut un page intermédiaire:


    1) formulaire quelconque à remplire
    2) affichage d'une page "action exécutée, cliquez ici pour télécharger le résultat"
    3) l'utilisateur clique ou non sur le lien, il a déjà recu un message disant que son action avait été efectuée.

    Bref, faut éviter de confuser le métier en voulant tout faire à la fois

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Ca ne serait pas forcément mieux si j'allais vers une autre page avec une action pour faire "la suite" car la génération du fichier Excel implique ensuite une modification des données en base (qui sont mises à jour dans le tableau affiché dans la page qui déclenche l'action de générer ce fichier Excel).
    Et puis personne ne voudrait faire d'actions supplémentaires tout ça parce que des idiots de développeurs (moi, ) ont décidé que c'était pas possible.

    Pour le inline, y a-t-il moyen d'ouvrir dans un nouvel onglet (je trouve pas)
    sais-tu pourquoi j'ai ce comportement étrange après l'avoir téléchargé?

  11. #11
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Je ne comprend pas quel est le problème.

    Tu fais une modification et, en même temps, tu génère un fichier excel. Soit.
    Ensuite l'utilisateur affiche ce fichier.

    Entre le point 1 et le point 2, il peux se passer beaucoup de choses:
    interruption réseau
    annulation de l'utilisateur
    plantage de la machin
    "oubli" de sauvegarder
    etc.

    Donc de toutes façon, je suppose qu'il est prévu que l'utilisateur puis revoir plus tard ce fichier excel, d'une manière où d'un autre.

    Sinon, faudra former ton métier à comprendre qu'il y a une différence entre ce que fait le serveur quand tu clique sur "ok" et ce que fait le type sur la chaise 5 minutes après.

  12. #12
    Membre chevronné Avatar de florentB
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2006
    Messages
    332
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2006
    Messages : 332
    Par défaut
    Bonjour,

    je vais sûrement dire une connerie, mais as-tu prévu de demander la confirmation de traitement ?

    Si sur clic bouton, le traitement est lancé, tu n'as effectivement aucun moyen de l'arrêter. Par contre, tu pourrais rajouter une popup de confirmation de traitement : création du fichier + traitement post-création (les deux étant apparemment indissociables).

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par florentB Voir le message
    Par contre, tu pourrais rajouter une popup de confirmation de traitement
    Certes

    Juste éventuellement une réponse sur mes questions sur le comportement inline et je ferme.

  14. #14
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Pour le inline, y a-t-il moyen d'ouvrir dans un nouvel onglet (je trouve pas)
    -> c'est au moment de la soumission qu'il faut préciser ça (target=....)
    sais-tu pourquoi j'ai ce comportement étrange après l'avoir téléchargé?
    ->quel comportement?

  15. #15
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Pour le inline, y a-t-il moyen d'ouvrir dans un nouvel onglet (je trouve pas)
    -> c'est au moment de la soumission qu'il faut préciser ça (target=....)
    OK; merci.

    Note : évidemment sous Firefox : ça tente d'ouvrir un nouvel onglet puis ça le ferme et ça me propose au final la boîte de téléchargement de fichier.

    Citation Envoyé par tchize_ Voir le message
    sais-tu pourquoi j'ai ce comportement étrange après l'avoir téléchargé?
    ->quel comportement?
    Tellement étrange que...je n'ai plus le problème (juste un bug Excel passager sans doute...)

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Désolé, je suis quand-même obligé de rajouter une chose :
    si j'ouvre dans une nouvelle fenêtre, impeccable.

    je réitère l'opération, j'ai de nouveau des données Excel dans une 3e fenêtre mais la seconde fenêtre elle devient blanche (oups, j'ai perdu mes données!)

  17. #17
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    là ça a plus à voir avec excel qu'avec ton application. Si excel se vautre, t'es difficilement responsable (accuse le helpdesk tiens)

  18. #18
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    là ça a plus à voir avec excel qu'avec ton application. Si excel se vautre, t'es difficilement responsable
    Mais non, Excel n'y est pour rien : les données Excel que j'avais envoyées dans ma fenêtre n°2 disparaissent de la fenêtre si une 3e fenêtre est ouverte à la suite d'une nouvelle action de générer un fichier Excel dans une nouvelle fenêtre.

  19. #19
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    oui donc, EXCEL, fait disparaitre tes données

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    759
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 759
    Par défaut
    Après tout peut-être, je ne sais pas si Excel ou IE est responsable de ce comportement.

    Et au fait question bête :
    choix1 : fenêtre d'enregistrement
    choix2 : ouverture dans une nouvelle fenêtre IE
    choix3 : il ne serait pas possible d'ouvrir les données directement dans une instance de Excel (l'équivalent de cliquer sur OK à chaque fois quoi)?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Masquer un bouton de commande lors de l'enregistrement du fichier Excel
    Par facteur dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/02/2014, 16h07
  2. [WD10] Les bouton de position des enregistrements du fichier dans la table
    Par bestmoroco dans le forum WinDev
    Réponses: 1
    Dernier message: 22/03/2012, 13h39
  3. bouton enregistrer/bouton annuler
    Par high_koko dans le forum HyperFileSQL
    Réponses: 1
    Dernier message: 28/12/2010, 18h28
  4. [AC-2010] bouton annulé un enregistrement
    Par idiot dans le forum IHM
    Réponses: 1
    Dernier message: 27/09/2010, 17h09
  5. [XL-2000] desactivation du bouton annulé dans "enregistrer sous"
    Par a_centaure dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 08/03/2010, 14h56

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