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 :

Afficher une image type sablier


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut Afficher une image type sablier
    Bonjour, avant d'afficher une jsp, je dois faire un traitement qui peut durer une minute. Je souhaiterais donc afficher une image type sablier pour informer que le traitement est en cours.

    Je ne sais pas du tout comment faire, pouvez-vous m'indiquer comment procéder ? Faut-il recourir à JavaScript ou bien est-ce que le contrôle se fait côté serveur ?

  2. #2
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Salut,

    Je dois faire un petit tuto à ce sujet depuis un petit bout de temps ^^

    Il y a peut être d'autre solution mais je l'applique pour des traitement ou pour l'upload de document.

    Le formulaire comprend :
    - une div caché contenant un message et un petit gif animé d'un sablier qui apparait à la validation du formulaire.
    - un target vers une autre div caché vide
    - la validation du formulaire par sur le post d'une servlet
    - le formulaire est validé via javascript

    Dans le doPost de la servlet je fais le traitement et je marque en session l'état d'avancement du traitement.

    Dans le doGet je génère un flux xml en fonction de la valeur récupérer en session sur l'avancement du traitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.setContentType("text/xml");
    Le doGet est appelé via XMLRequest à partir du formulaire avec un appel toutes les X secondes en fonction de la taille du traitement (le paramètre X pouvant être passé dans le flux XML)

    lorsque le traitement est fini supression de la target et changement de l'action du formulaire pour passé à l'écran suivant.

    Un bout de code AJAX

    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
    35
    36
    37
    38
    39
    40
    var req;
     
    			function ajaxFunction()
    			{		
    			    var url = "<%=request.getContextPath()%>/ServletDoGet";
     
    			    if (window.XMLHttpRequest) // Non-IE browsers
    			    { 	    	
    			        req = new XMLHttpRequest();
     
    					try 
    			        {
    			            req.open("GET", url, true);
    			            req.onreadystatechange = function()
    			            {
    				    		if (req.readyState == 4)
    				    		{
    						      processStateChange();
    				    		}
    				  		}
    				 	} 
    			        catch (e) 
    			        {
    			            alert(e);
    			        }
    			        req.send(null);
     
    			    } 
    			    else if (window.ActiveXObject) // IE Browsers
    			    { 
    			        req = new ActiveXObject("Microsoft.XMLHTTP");
     
    			        if (req) 
    			        {
    			            req.onReadyStateChange = processStateChange;
    			            req.open("GET", url, true);
    			            req.send();
    			        }
    			    }	    
    			}
    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
    35
    36
    37
    38
    39
    40
    41
    function processStateChange()
    {
    	/**
    	*  State    Description
    	*    0      The request is not initialized
    	*    1      The request has been set up
    	*    2      The request has been sent
    	*    3      The request is in process
    	*    4      The request is complete
    	*/
     
    	if (req.readyState == 4)
    	{
    		if (req.status == 200) // OK response
    		{
    			var xml = req.responseXML;
     
    			var etatTraitement = xml.getElementsByTagName("traitement")[0];	
    			var raffraichissement = xml.getElementsByTagName("rafraichissement%>")[0];
     
    			if (etatTraitement == null)//étape initialisation
    				{			            	
    					if(raffraichissement==null)
    						window.setTimeout("ajaxFunction();", 2000);			            	
    					else
    						window.setTimeout("ajaxFunction();", raffraichissement.firstChild.data);			            	
     
    				}
    				else
    				{
    					var etatDuTraitement = etatTraitement.firstChild.data;
    					if(etatDuTraitement=="terminer")
    					{
    						document.monForm.action = "actionAffichage.do";
    						document.monForm.target="";				
    						document.monForm.submit();
    					}		
    				}
    		}	
    	}
    }
    En esperant que cela te mette sur la voix si tu as d'autre question hésite pas

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Je ne suis pas une bête en html, mais si on utilise un div caché, est-ce qu'on va pouvoir obtenir une superposition de l'animation sur la page de fond lorsqu'elle s'affichera ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    511
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 511
    Par défaut
    Bonjour

    Exactement, tu mets ton sablier dans un div caché et avant de lancer le traitement tu affiches le div.

  5. #5
    Membre chevronné
    Avatar de link256
    Profil pro
    Développeur Java
    Inscrit en
    Février 2003
    Messages
    596
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Février 2003
    Messages : 596
    Par défaut
    Tu mets la div caché contenant le sablier en position:absolute tu peux aussi jouer sur le z-index ainsi que sur l'opacité des élément de ta page en diminuant celle des éléments qui sont en arrière plan.

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Il faut tout de même préciser que le "sablier" doit être afficher par la page appelante (phase request) pas dans la page cible (après response), il sera trop tard...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Afficher une image de type OID en Java
    Par IMPRO dans le forum Général Java
    Réponses: 5
    Dernier message: 11/05/2012, 18h18
  2. [MySQL] Afficher une image de type blob
    Par bond70 dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 26/04/2010, 16h29
  3. Réponses: 5
    Dernier message: 15/12/2008, 17h15
  4. Afficher une image d'apres un formulaire utilisant input type="file"
    Par kilian67 dans le forum Général JavaScript
    Réponses: 33
    Dernier message: 17/08/2008, 22h12
  5. Réponses: 4
    Dernier message: 22/08/2006, 15h16

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