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

Développement Web en Java Discussion :

[Stratégie] Gestion du veuillez patienter


Sujet :

Développement Web en Java

  1. #1
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut [Stratégie] Gestion du veuillez patienter
    Bonjour

    Je travaille sur un projet Web (Tomcat, Spring, Ibatis...) et nous avons des petits soucis pour gérer l'attente entre le clique sur un bouton et une longue action sur le serveur (la génération d'état pdf de plusieurs Mo...)

    Comment faire pour que l'utilisateur ne clique pas 10 fois sur le bouton et attende gentiment la fin de la génération... ?

    Actuellement, nous bloquons le bouton via du javascript pendant n secondes au moment du clique, mais ce n'est pas terrible...

    si vous avez des pistes ou des suggestions, je suis preneur

    merci

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

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

    Informations forums :
    Inscription : avril 2007
    Messages : 25 481
    Points : 48 794
    Points
    48 794
    Par défaut
    J'ai eu exactement un cas similaire
    c'était assez catastrophique car la génération mettait jusqu"à 2 minutes et le submit créait une demande spécifique (qqes millisecondes) et aussi générait un pdf documentant la demande (2 minutes avec du xsl fo :s ). Résultat, les utilisateur cliquaient 15 fois, et donc faisaient 15 fois la requete qui était transmise par email à des responsables, etc, bref l'innondation de mails


    La solution "sobre" a été basée sur du javascript. On cache tout le formulaire (display:none) lors du clic et on affiche (display:block) un joli div disant "votre requête est en cours de traitement, blablablabla".

    Sinon, une autre solution possible, c'est d'ajouter un compteur au formulaire et de refuser dans ton code, deux submit avec la meme valeur de compteur....

  3. #3
    Membre régulier Avatar de fisico
    Profil pro
    Inscrit en
    septembre 2003
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : septembre 2003
    Messages : 98
    Points : 92
    Points
    92
    Par défaut
    Des solutions basées sur JavaScript ne sont pas de bonnes idées.

    Cela n'empêche pas vos servlets de toujours recevoir de nouvelles instructions, je veux dire que le côté serveur n'est pas protégé.

    Une meilleure solution selon moi est d'utiliser les sessions afin de savoir si un utilisateur a déjà ou non fait une requête de génération pdf. Prends l'exemple suivant:

    1/ l'utilisateur demande la génération en cliquant sur le bouton d'un formulaire
    2/ la servlet prend en compte le traitement et redirige l'utilisateur vers une page lui indiquant que sa demande est en cours de traitement
    * le status de la demande est stockée dans une variable de session
    3/ l'utilisateur peut cliquer sur une autre page afin de voir le status du traitement
    * le traitement une fois fini n'aura qu'à mettre la variable de session à jour
    SCJP - SCWCD - SCBCD

  4. #4
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    Solution intéressante afin de surveiller que deux utilisateurs différents ne lancent le même traitement.

    Mais ce n'est pas tout à fait mon souci....

    Voici ce que je voudrai faire :
    1. Clique sur le bouton pour la génération d'un pdf
    2. Apparition d'un veuillez patienter
    3. Début traitement de génération sans connaitre la durée
    4. Fin traitement
    5. Suppression du veuillez patienter
    6. Téléchargement du pdf
    Comment faire communiquer le navigateur et le serveur pour déterminer le temps de traitement ?

    Quelqu'un l'a t'il déjà fait ? en Ajax ??

  5. #5
    Invité
    Invité(e)
    Par défaut
    J'avait le même problème avec une conversion de pdf en html..

    Ma servlet recevait le fichier et lançait l'action dans un Thread ensuite retournait sur la page du formulaire avec un message 'Conversion en cours, bla bla bla...'
    et un id de conversion.
    Un peu d'ajax intérogeait un autre servlet pour savoir si la conversion (via l'id) était toujours en cours ou pas..

    Evidemment l'utilisateur pouvait lancer plusieurs conversions mais au moins il était tenu informé tant qu'il restait sur la page..

  6. #6
    Membre actif Avatar de tnodev
    Profil pro
    SSSSS
    Inscrit en
    mai 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : SSSSS

    Informations forums :
    Inscription : mai 2005
    Messages : 182
    Points : 231
    Points
    231
    Par défaut
    Citation Envoyé par Blaise1 Voir le message
    J'avait le même problème avec une conversion de pdf en html..

    Ma servlet recevait le fichier et lançait l'action dans un Thread ensuite retournait sur la page du formulaire avec un message 'Conversion en cours, bla bla bla...'
    et un id de conversion.
    Un peu d'ajax intérogeait un autre servlet pour savoir si la conversion (via l'id) était toujours en cours ou pas..

    Evidemment l'utilisateur pouvait lancer plusieurs conversions mais au moins il était tenu informé tant qu'il restait sur la page..
    Très intéressant, mais une petite question :
    Une fois que le traitement est terminé, le téléchargement doit se faire automatiquement, comment se gère le retour de l'action du thread ?

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tnodev Voir le message
    Une fois que le traitement est terminé, le téléchargement doit se faire automatiquement, comment se gère le retour de l'action du thread ?
    Je n'avais pas se problème. Mon "application" servait uniquement à publier des documents au format html sur un Intranet.
    Je dirais que si tu as l'id de la conversion, tu devrais pouvoir récupérer le chemin vers le fichier génèré et donc le télécharger.

Discussions similaires

  1. fenêtre veuillez patienter sous forms
    Par gege87270 dans le forum Forms
    Réponses: 6
    Dernier message: 29/11/2007, 09h31
  2. [Stratégie] Gestion d'un timeout en environnement mono-thread
    Par loicdvi dans le forum Général Java
    Réponses: 2
    Dernier message: 14/05/2007, 10h07
  3. Boîte de message sans bouton "Veuillez patienter..."
    Par Droïde Système7 dans le forum Delphi
    Réponses: 18
    Dernier message: 14/02/2007, 11h38
  4. Création boîte "Veuillez patienter..."
    Par tomy29 dans le forum Delphi
    Réponses: 2
    Dernier message: 02/01/2007, 12h06
  5. Message personnalisé "Veuillez patienter"
    Par jmde dans le forum Access
    Réponses: 2
    Dernier message: 27/09/2006, 13h07

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