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 :

Formulaire qui se submit plusieurs fois


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut Formulaire qui se submit plusieurs fois
    Bonjour, je débute en Java, et j'ai un programme assez complexe en Struts et J2EE à reprendre...
    Il s'agit d'une interface web qui va instancer via Xen API des machines virtuelles.
    Il y a un formulaire de création d'une machine qui demande l'OS choisi, la mémoire etc etc. La vraie création se fait ensuite par JMS dans une queue.

    Voici les actions Struts associées pour la création d'une machine :

    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
     
    <action
          path="/prepareCreateVirtualServer"
          type="com.virt.presentation.action.create.PrepareCreateVirtualServerAction">
          <forward name="success" path="/createVirtualServer.jsp"/>
        </action>
     
    <action
          path="/createVirtualServer"
          type="com.virt.presentation.action.create.CreateVirtualServerAction"
          name="virtualServerForm"
          scope="request"
          validate="true"
          input="/preparecreateVirtualServer.do">
          <forward name="success" path="/viewVirtualServers.do" redirect="true"/>
        </action>
    Maintenant on me demande de faire un workflow de validation.
    C'est-à-dire lorsqu'une personne fait une demande de machine virtuelle, un email est envoyé à l'admin ; pour valider il clique, un exemple machine id=10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    http://localhost:8080/validVirtualServer.do?id=10
    Ce qui affiche la page viewvirtualserver.jsp en retour avec les manips possibles (démarrage, arrêt etc).

    Mais cette page s'auto-refresh toutes les 10 s.
    Et toutes les 10 s mon formulaire de création de machine virtuelle est exécuté de nouveau !!
    Je ne vois pas du tout pourquoi...

    Le code de l'action de validation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <action
          path="/validVirtualServer"
          scope="request"
          type="com.virt.presentation.action.control.ValidVirtualServerAction">
           <forward name="success" path="/viewVirtualServers.do"/>
        </action>
    Comment empêcher cette revalidation automatique de formulaire ??
    A moins que cela ne vienne de JMS mais je ne crois pas...

    Merci de votre aide.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    peux-tu mettre le code de la JSP?
    je vois 2 pistes à vérifier :
    - qu'il n'y ait pas la balise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <META HTTP-EQUIV="Refresh" CONTENT="n">
    .. cf. ici
    - qu'il n'y a pas en javascript un timeout pour submiter le formulaire.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut
    Voici le code de la jsp
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
     
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/security.tld" prefix="security" %>
    <!--jsp:useBean id="vservers" scope="request" type="java.util.Collection" /-->
    <!--jsp:useBean id="dvos" scope="request" type="java.util.Collection" /-->
    <!--jsp:useBean id="filtered" scope="request" type="java.lang.Boolean" /-->
     
    <security:validateUser/>
     
    <HTML>
    	<HEAD>
    		<meta http-equiv="refresh" content="10">
    		<TITLE><bean:message key="application.title.short"/></TITLE>
    		<LINK REL="stylesheet" TYPE="text/css" HREF="style.css" TITLE="Style">
    	</HEAD>
    	<BODY>
    	<script LANGUAGE="JavaScript">
    		function confirmSubmit()
    		{
    		var agree=confirm("Etes-vous sûr ?");
    		if (agree)
    			return true ;
    		else
    			return false ;
    		}
    	</script>
    		<%@ include file="header.jsp" %>
    		<%
    		boolean canDelete = false;
    		%>
    		<security:hasResource value="/actions/action.delete.DeleteCustomerAction">
    			<%
    			canDelete = true;
    			%>
    		</security:hasResource>
    		<DIV align="center">
    			<%
    			java.lang.Boolean filtered = (java.lang.Boolean) request.getSession().getAttribute("filtered");
    			filtered = new Boolean(true);
    			if (filtered.booleanValue()) {
    				%>
    				<TABLE width="75%" class="warning">
    					<TR>
    						<TD align="right">
    							<IMG src="images/info.gif"/>
    						</TD>
    						<TD align="left">
    							<bean:message key="warning.customersAreHidden"/>
    						</TD>
    					</TR>
    				</TABLE>
    				<%
    			}
    			%>
    			<%
    			if (!canDelete) {
    				%>
    				<TABLE width="75%" class="warning">
    					<TR>
    						<TD align="right">
    							<IMG src="images/info.gif"/>
    						</TD>
    						<TD align="left">
    							<bean:message key="warning.cantDelete"/>
    						</TD>
    					</TR>
    				</TABLE>
    				<%
    			}
    			if ((filtered.booleanValue()) || (!canDelete)) {
    				%>
    				<P>
    				<%
    			}
    			%>
    			<p><a href="viewVirtualServers.jsp">Actualiser</a></p>
    			<TABLE width="75%" height="50%" class="list">
    				<TR>
    					<TH align="center"><bean:message key="vserver.name"/></TH>
    					<TH align="center"><bean:message key="vserver.ip"/></TH>
    					<TH align="center"><bean:message key="vserver.os"/></TH>
    					<TH align="center"><bean:message key="vserver.state"/></TH>
    					<TH align="center"><bean:message key="vserver.action"/></TH>
    				</TR>
    				<%
    				java.util.Set vservers = (java.util.Set) request.getSession().getAttribute("vservers");
    				if (vservers == null) vservers = new java.util.HashSet();
     
    				java.util.Set dvos = (java.util.Set) request.getSession().getAttribute("dvos");
    				if (dvos == null) dvos = new java.util.HashSet();
     
    				String even = "even";
    				String odd = "odd";
    				String current = even;
     
    				java.util.Iterator iterator = vservers.iterator();
    				while (iterator.hasNext()) {
    					com.virt.integration.VirtualServerVO vserver = (com.virt.integration.VirtualServerVO) iterator.next();
    					Integer state = vserver.getState();
    					String uuid = vserver.getUuid();
    					String ip = vserver.getIp();
    					Integer idvs = vserver.getId();
     
    					java.util.Iterator iterator2 = dvos.iterator();		
    					while (iterator2.hasNext()) {
    						com.virt.integration.DemandVO dvo = (com.virt.integration.DemandVO) iterator2.next();
    						Integer DemandId = dvo.getId();
    						Integer vsid = dvo.getVirtServerId();
    						Integer status = dvo.getStatus();
     
    						if (vsid.equals(idvs)) { 
    					%>
     
    					<TR class="<%=current%>">
    						<TD align="center"><%=(vserver.getName() == null ? "En cours de configuration" : vserver.getName())%></TD>
    						<TD align="center"><%=(ip == null ? "En cours de configuration" : ip )%></TD>
    						<TD align="center"><%=(vserver.getOs() == null ? "En cours de configuration" : vserver.getOs().getName())%></TD>
    						<TD align="center">
    							<% if (state == null) { out.println("En cours de configuration"); }  
    							else if (state.equals(new Integer(1))) { out.println("<img alt=\"Démarré\" src=\"images/running.gif\"/>"); }
    							else if (state.equals(new Integer(3))) { out.println("<img alt=\"Arrêté\" src=\"images/halted.gif\"/>"); }
    							else if (state.equals(new Integer(5))) { out.println("En attente de validation"); }
    							else { out.println("N/A"); };
    							%>
    						</TD>
    						<TD align="center">
    						  	<% if ( (state == null) && (!status.equals(new Integer(0)))) { out.println("N/A"); } 
    							else if (state.equals(new Integer(1))) { out.println("<a href=haltVirtualServer.do?uuid=" + uuid + "><img alt=\"Arrêter\" src=\"images/halt.gif\"/></a><br/><a href=http://" + ip + ":5801\" target=_" + ip + "><img alt=\"Accéder au serveur\" src=\"images/server2.gif\"></a>"); } 
    							else if (state.equals(new Integer(3))) { out.println("<a href=startVirtualServer.do?uuid=" + uuid + "><img alt=\"Démarrer\" src=\"images/start.gif\"/></a><br/><a onclick=\"return confirmSubmit()\" href=deleteVirtualServer.do?uuid=" + uuid + "><img alt=\"Détruire\" src=\"images/trashcan.gif\"></a>");	}
    							if (status.equals(new Integer(0))) { out.println("<a onclick=\"return confirmSubmit()\" href=deleteDemand.do?id=" + DemandId + "><img alt=\"Annuler la demande\" src=\"images/trashcan.gif\"/></a>"); } 
    						 	 %>
    						</TD>
     
    					</TR>
    					<%
    					if (current == even) current = odd;	else current = even;
    					 }	// endif
    					}
    				}
    				%>
     
    			</TABLE>
    		</DIV>
    		<%@ include file="footer.jsp" %>
    	</BODY>
    </HTML>
    Mais j'ai besoin de garder le rafraichissement automatique de cette page justement

  4. #4
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    Citation Envoyé par otterley
    Mais cette page s'auto-refresh toutes les 10 s.
    Et toutes les 10 s mon formulaire de création de machine virtuelle est exécuté de nouveau !!
    Je ne vois pas du tout pourquoi..
    L'auto-refresh est du à cette ligne dans le HEAD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="refresh" content="10">
    Citation Envoyé par otterley Voir le message
    Mais j'ai besoin de garder le rafraichissement automatique de cette page justement
    bah, je ne comprends pas... c'est contradictoire avec ce que tu veux, non?

    il faut que le refresh de ta jsp redirige vers une autre action, que celle de création de serveur...
    il suffit d'ajouter l'attribut "url" dans la balise meta.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut
    Ben en fait l'autorefresh a lieu sur la page jsp de visualisation des serveurs, pas sur le formulaire (enfin l'action Struts) de création de la machine virtuelle justement ?

    C'est-à-dire que le formulaire c'est preparecreateVirtualServer.do et la visualisation c'est viewVirtualServers.do.

    Malgré cela il se submit toutes les 10s, ou alors quelque chose m'échappe dans le fonctionnement des actions Struts...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 13
    Par défaut
    Pour préciser, l'action Struts de visualisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <action
          path="/viewVirtualServers"
          type="com.virt.presentation.action.view.ViewVirtualServersAction">
          <forward name="success" path="/viewVirtualServers.jsp"/>
        </action>

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/03/2013, 14h17
  2. [VB.NET]Procédure qui s'éxécute plusieurs fois
    Par ropiet dans le forum Windows Forms
    Réponses: 13
    Dernier message: 25/08/2006, 17h21
  3. Réponses: 11
    Dernier message: 27/06/2006, 15h05
  4. code qui s'execute plusieurs fois
    Par khelif dans le forum JBuilder
    Réponses: 1
    Dernier message: 10/03/2005, 21h56
  5. formulaire qui doit appeler plusieurs pages
    Par rohel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/01/2005, 08h59

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