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 :

gestion dynamique du formulaire sans Javascript


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut gestion dynamique du formulaire sans Javascript
    Bonjour,

    Je suis en train de travailler sur un formulaire, et il doit gérer dynamiquement les champs, ma question est de savoir si c'est possible de gérer dynamiquement les champs sans utiliser le JS, par exemple si je sélectionne 10 pour le champ textCOP, les 3 derniers champs ne doivent pas s'afficher, et certains champs doivent se préremplir...

    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
    <html:form action="/ACIN.do">
     
      		*<bean:message key="tcpip.codeOp"/> :
      			<html:select property="textCOP" value="10">	
      				<html:option>10</html:option>
    	  			<html:option>11</html:option>
      				<html:option>21</html:option>
      				<html:option>22</html:option>
      				<html:option>23</html:option>
      				<html:option>24</html:option>
      				<html:option>30</html:option>
      				<html:option>31</html:option>
      				<html:option>40</html:option>
      			</html:select>	
        	*<bean:message key="tcpip.codeIns"/> : <html:text property="txtINS" size="30" maxlength="6"/>
    	    *<bean:message key="tcpip.codeSubIns"/> : <html:text property="txtSUBINS" size="30" maxlength="6"/>
    	    *<bean:message key="tcpip.seqAddr"/> : <html:text property="txtSEQADDR" size="20" maxlength="2"/>
    	    *<bean:message key="tcpip.typeAddr"/> : <html:text property="txtTYPEADDR" size="30" maxlength="6"/>
    	    *<bean:message key="tcpip.nom"/> : <html:text property="txtNOM" size="60" maxlength="50"/>
    	    *<bean:message key="tcpip.rue"/> : <html:text property="txtRUE" size="60" maxlength="50"/>
    	    *<bean:message key="tcpip.ville"/> : <html:text property="txtVILLE" size="60" maxlength="50"/>
     
        </html:form>
    Merci de votre aide

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Si tu ne veux pas utiliser du Javascript, tu peux soumettre le formulaire lors de la sélection d'une valeur dans la liste déroulante via l'attribut onchange :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:select property="textCOP" onchange="document.forms[0].submit();">
    et pour conditionner l'affichage des champs texte, tu peux utiliser le tag logic:equal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <logic:equal name="nomDuFormBean" property="textCOP" value="10">
    	    *<bean:message key="tcpip.nom"/> : <html:text property="txtNOM" size="60" maxlength="50"/>
    	    *<bean:message key="tcpip.rue"/> : <html:text property="txtRUE" size="60" maxlength="50"/>
    	    *<bean:message key="tcpip.ville"/> : <html:text property="txtVILLE" size="60" maxlength="50"/>
    </logic:equal>
    et pour pré-remplir certains champs, étant donné que le formulaire est soumis lors de la sélection d'une valeur dans la liste déroulante, l'Action de path /ACIN est exécutée. Donc, dans cette Action, tu ajoutes un test sur la valeur de la propriété textCOP et si celle-ci est égale à 10, tu initialises les propriétés des champs en question via les setters de l'ActionForm.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Merci pour ta réponse, j'ai testé avec cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:select property="textCOP" onchange="document.forms[0].submit();">
    Mais, je rencontre le problème suivant, dés que sélectionne une option, le formulaire est validé, et je peux plus saisir les autres champs, je ne comprends pas pourquoi, ce que je veux c'est avoir une modification dynamique de mes champs, et que la validation du formulaire se fait par clic sur le bouton "Valider"

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    J'ai pensé utiliser des tests <c:if> en utilisant des taglibs JSTL (que je connais pas très bien), mais je ne sais pas vraiment comment je peux récupérer de façon dynamique le contenu de ma liste déroulante ?

  5. #5
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par reneguenon Voir le message
    Mais, je rencontre le problème suivant, dés que sélectionne une option, le formulaire est validé, et je peux plus saisir les autres champs, je ne comprends pas pourquoi, ce que je veux c'est avoir une modification dynamique de mes champs, et que la validation du formulaire se fait par clic sur le bouton "Valider"
    Tu as une solution en mettant validate à false dans le mapping de l'Action, en ajoutant un attribut property dans le tag html:submit et en appelant la validation dans l'Action lorsque la valeur de la propriété affectée au bouton submit est égale à "Valider" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    TonActionForm tonActionForm = (TonActionForm) form ;
    String bouton=tonActionForm.getProprieteBoutonSubmit() ;
     
    if ( "Valider".equals(bouton) )
    {
    	ActionMessages errors = form.validate(mapping, request);
    	if ( !errors.isEmpty() )
    	{
    		this.saveErrors(request, errors);
    		return mapping.getInputForward() ;
    	}
    }

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2008
    Messages
    125
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 125
    Par défaut
    Je t'avoue que j'ai pas bien compris ta solution, est ce que je dois créer un champ "proprieteBoutonSubmit()" avec un getter et un setter dans mon actionForm...
    Le code que t'as mis est à mettre dans l'action ou bien dans la méthode validate de l'actionForm...

  7. #7
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Citation Envoyé par reneguenon Voir le message
    Je t'avoue que j'ai pas bien compris ta solution, est ce que je dois créer un champ "proprieteBoutonSubmit()" avec un getter et un setter dans mon actionForm...
    J'ai écrit qu'il fallait ajouter un attribut property au tag html:submit.
    Cela sous-entend effectivement qu'il faut créer une propriété dans l'ActionForm qui correspond au bouton submit et qui contiendra sa valeur.
    Dans mon exemple, j'avais mis "proprieteBoutonSubmit" pour que tu comprennes que ça correspond au nom de la propriété que tu auras choisi de mettre pour le bouton submit.
    Mais tu peux l'appeler comme tu veux.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html:submit property="bouton" value="Valider"/>
    Citation Envoyé par reneguenon Voir le message
    Le code que t'as mis est à mettre dans l'action ou bien dans la méthode validate de l'actionForm...
    J'ai écrit "en appelant la validation dans l'Action".
    Donc, oui, le code que j'ai donné est à mettre dans l'Action.

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

Discussions similaires

  1. Gestion dynamique formulaire
    Par luffyfr dans le forum jQuery
    Réponses: 2
    Dernier message: 10/10/2012, 20h30
  2. Formulaire sans Javascript
    Par BRUNO71 dans le forum Langage
    Réponses: 16
    Dernier message: 16/04/2011, 19h49
  3. Réponses: 3
    Dernier message: 09/07/2009, 10h25
  4. formulaire sans attribut 'action' et javascript
    Par cyanure93 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 16/04/2007, 11h18
  5. Réponses: 14
    Dernier message: 27/07/2006, 14h40

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