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 :

Changement de couleur des champs text en cas d'erreur de validation


Sujet :

Struts 1 Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut Changement de couleur des champs text en cas d'erreur de validation
    Bonjour,

    J'ai un problème ou plutôt, je ne vois vraiment pas comment faire ça...

    Voilà j'ai une validation de deux camps, nom et password, je valide donc ce formulaire(DynaValidatorForm) avec ces deux champs, si les champs ne satisfassent pas les critères que j'ai mis dans un fichier appelé validation.xml et voici sont contenu pour les deux champs en question:

    <form name="loginForm">
    <field property="nombre" depends="required, minlength, maxlength">
    <arg0 key="label.nombre" />
    <!-- <arg0 key="label.dni" />-->
    <arg1 name="minlength" key="${var:minlength}" resource="false"/>
    <arg2 name="maxlength" key="${var:maxlength}" resource="false"/>
    <var>
    <var-name>minlength</var-name>
    <var-value>3</var-value>
    </var>
    <var>
    <var-name>maxlength</var-name>
    <var-value>50</var-value>
    </var>
    </field>

    <field property="password" depends="required, minlength,maxlength">
    <arg0 key="label.password" />
    <arg1 name="minlength" key="${var:minlength}" resource="false" />
    <arg2 name="maxlength" key="${var:maxlength}" resource="false" />
    <var>
    <var-name>minlength</var-name>
    <var-value>3</var-value>
    </var>
    <var>
    <var-name>maxlength</var-name>
    <var-value>30</var-value>
    </var>
    </field>

    </form>
    Dans une jsp j'ai ce paramètre pour afficher une validation en cas d'erreur:

    <html:errors/>, si les champs sont incorrect alors j'obtiens bien les messages d'erreur.

    Maintenant ce que je ne sais pas faire , c'est que j'aimerais changer de couleur les champs de textes si la validation est incorrect, pour être plus claire je voudrais appeler une fonction javaScript si le contenu de <html:errors/> n'est pas vide...


    Je vous remercie d'avance .

  2. #2
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Si tu utilises une version de Struts supérieure ou égale à la 1.2.5, tu peux utiliser les attributs errorStyle ou errorStyleClass du tag html:text.

    Sinon, tu peux tester la présence de messages d'erreur sur les champs via le tag logic:messagesPresent et mettre un style particulier dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <logic:messagesPresent property="nomDuChamp">
       <td style="color:red;">
    </logic:messagesPresent>
    <logic:messagesNotPresent property="nomDuChamp">
       <td>
    </logic:messagesNotPresent>
    ...
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	<table bgcolor="#cccddd" border="1" align="center">
    		<tr>
    			<td><b><bean:message key="label.nom" /></b></td>
    			<td><html:text property="nom" name="loginForm">*&nbsp:</html:text></td>
    		</tr>
    		<tr>
    ......
    et là je ne vois pas comment utiliser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <logic:messagesPresent property="nom">
       <td style="color:red;">
    </logic:messagesPresent>
    et aussi on imagine que je veuilles appeler une fonction javaScript entre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <logic:messagesPresent property="nom">
    maFonctionJavaScript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    </logic:messagesPresent>
    Merci

  4. #4
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Pourquoi vouloir à tout prix utiliser du Javascript ?

    Avec la deuxième solution que j'ai donné, ça donnerait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <logic:messagesPresent property="nom">
       <td style="color:red;">
    </logic:messagesPresent>
    <logic:messagesNotPresent property="nom">
       <td>
    </logic:messagesNotPresent>
         <html:text property="nom">*&nbsp:</html:text>
       </td>
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    Ok je change mes bibliothèque vers struts 1.2.6 je test errorStyle et aussi cette solution....


    et je reviens

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    je ne vois pas ce qui ne marche pas mais j'ai ça...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	<table bgcolor="#cccddd" border="1" align="center">
    		<tr>
    			<td><b><bean:message key="label.nom" /></b></td>
    			<logic:messagesPresent property="nom">
    		 		<td style="color:#FF6600;">
    		 	</logic:messagesPresent>
    		 	<logic:messagesNotPresent property="nom">
      				 <td>
    			</logic:messagesNotPresent>
    		 	<html:text property="nom" name="loginForm">*&nbsp:</html:text></td>
    		</tr>
    		<tr>
    et rien ni fait,

    j'ai aussi changé les bibliothèque de struts ver une version 1.2.6 et l'attribut errorStyle n'est pas reconnu...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    Je vien de faire du debug est ça marche bien, j'ai mi du text en dur pour voir si le texte était écrit à la page et ça marche... la couleur du champ de texte elle ne change pas mais ça je ne comprend pas pourquoi...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	<table bgcolor="#cccddd" border="1" align="center">
    		<tr>
    			<td><b><bean:message key="label.nombre" /></b></td>
    			<logic:messagesPresent property="nombre">
    		 		<td style="color:#FF6600;">
    		 		Si la validation n'est pas ok , ce texte s'imprime
    		 	</logic:messagesPresent>
    		 	<logic:messagesNotPresent property="nombre">
    et je vérifie bien que le texte s'imprime bien :Si la validation n'est pas ok , ce texte s'imprime

    j'ai changer mes bibliothèques vers la version 1.2.6 et la <html:text property="nom" errorStyle="color:red;"/> ne marche pas..... j'ai l'information que cette attribut n'est pas définit.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    Je te (vous) remercie ça marche, je n'avais pas les bonnes versions des tld ni des dtd, et maintenant ça marche, ce que je ne comprends toujours pas c'est le changement de la textBox qui ne marche pas ,mais ce n'est pas grave


    Merci beaucoup et a+

  9. #9
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Citation Envoyé par Snyper Voir le message
    Je vien de faire du debug est ça marche bien, j'ai mi du text en dur pour voir si le texte était écrit à la page et ça marche... la couleur du champ de texte elle ne change pas mais ça je ne comprend pas pourquoi...
    La couleur du champ ne changera que si tu saisis un texte qui n'a pas la bonne longueur. Dans le cas où il n'est pas renseigné, il ne changera évidemment pas de couleur puisqu'il n'y a rien dans le champ.
    Par contre, il y a un truc que je ne comprends pas bien. Le nom du champ est nom ou nombre ?
    Il faut que ce soit le même nom de champ dans l'attribut property des tags html:text et logic:messagesPresent de la jsp et dans l'attribut property de la balise field du fichier validation.xml.
    Citation Envoyé par Snyper Voir le message
    j'ai changer mes bibliothèques vers la version 1.2.6 et la <html:text property="nom" errorStyle="color:red;"/> ne marche pas..... j'ai l'information que cette attribut n'est pas définit.
    utilises-tu bien la tld struts-html.tld de Struts 1.2.6 ?
    Modératrice Java - Struts, Servlets/JSP, ...

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    Oui la validation marche bien et je test en mode debug et je m'aperçois que je passe bien par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td style="color:#FF6600;">
    si la validation n'est pas correct, mais celá ne produit aucun effet....

    oui le champ et nombre mais j'ai traduit pour pouvoir posté ici

    dans le fichier validation.xml il s'appelle effectivement nombre...


    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    errorStyle="color:red;"
    marche à merveille et le texte change de couleur.

  11. #11
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    En fait, je viens juste de penser que, pour que la zone de saisie s'affiche en rouge, il faudrait tout simplement utiliser background-color à la place de color dans l'attribut style de la balise <td>.
    Modératrice Java - Struts, Servlets/JSP, ...

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    Ça marche impeccable! Merci pour toutes ces réponses et juste une dernière question, je sais appeler des méthodes javaScript dans des formulaire avec OnChange et autre....


    Comment appeler ces méthode comme dans l'exemple:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<logic:messagesPresent property="nombre">
    		 		<td style="background-color:#FF6600;">
    		 		(Appelle de ma méthode javaScript )
    		 	</logic:messagesPresent>
    merci.

  13. #13
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    En général, l'appel d'une fonction javascript se fait sur un évènement de type onchange, onclick, ...

    Peux-tu préciser exactement pourquoi tu veux appeler une fonction Javascript dans ce cas précis ?
    Modératrice Java - Struts, Servlets/JSP, ...

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    rien de spécial je voudrais juste savoir si c'est possible et si oui comment, peut-être dans un futur proche je pourrais en avoir besoin....

  15. #15
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Tu dois bien avoir une idée derrière la tête sinon, je ne vois pas pourquoi tu poserais la question. Enfin, manifestement, tu ne souhaites pas le dire.
    Si ça a un rapport avec la validation, pour info, le Validator te permet de faire une validation en Javascript avant de faire la validation côté serveur.

    Sinon, je ne suis pas très forte en javascript mais tu dois pouvoir exécuter du code javascript en le mettant dans une balise script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:messagesPresent property="nombre">
    	<td style="background-color:#FF6600;">
    	<script>
    		alert("erreur");
    	</script>
    </logic:messagesPresent>
    Modératrice Java - Struts, Servlets/JSP, ...

  16. #16
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    D'accord je pensais qu'il y avais un <html:javascript> qui pourait servire...


    Merci encore!

  17. #17
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Le tag html:javascript est utile lorsque tu veux mettre en oeuvre la validation javascript du Validator.
    Modératrice Java - Struts, Servlets/JSP, ...

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    Maintenant j'ai ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    	<table bgcolor="#cccddd" border="1" align="center">
    		<tr>
    			<td><b><bean:message key="label.nom" /></b></td>
    			<logic:messagesPresent property="nomb">
    		 		<td>
    		 		<script>
    		 			test(this);
    		 		</script>
     
    .......
    dans ma jsp je déclare la function test de cette façon:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            function test(loginForm){
            	loginForm.nombre.style.backgroundColor = '#FF9900';
            	alert("ERREUR");
           }

    mais rien......

  19. #19
    Expert éminent

    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
    Points : 7 778
    Points
    7 778
    Par défaut
    Fais un test en mettant le code javascript directement dans la balise script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <logic:messagesPresent property="nomb">
    	<td>
    	<script>
               	   loginForm.nombre.style.backgroundColor = '#FF9900';
            	   alert("ERREUR");
     	</script>
    </logic:messagesPresent>
    mais je ne vois toujours pas bien l'intérêt de passer par du javascript ici.
    Modératrice Java - Struts, Servlets/JSP, ...

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Points : 105
    Points
    105
    Par défaut
    D'accord je test, non c'est vraiment culture général

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

Discussions similaires

  1. [AC-2007] Changement de Couleur D'un Texte Suivant La Valeur du champ
    Par katalonb dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/04/2015, 12h57
  2. Réponses: 4
    Dernier message: 31/08/2005, 00h32
  3. concaténer par GROUP BY des champs text/varchar
    Par Fredobdx dans le forum Requêtes
    Réponses: 1
    Dernier message: 12/07/2005, 13h44
  4. [SQLite]éliminer un motif dans des champ TEXT
    Par Invité(e) dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/05/2005, 17h44
  5. Boucler sur des champs texte
    Par syl2095 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/11/2004, 16h15

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