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 2 Java Discussion :

Annotations et listes


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Par défaut Annotations et listes
    Bonjour! C'est mon premier message sur ce forum!

    J'utilise les annotations dans un projet Struts 2 et ça fait quelques fois que je suis dans une situation où les annotations ne fonctionnent pas. Je me demande si c'est possible de les utiliser de la façon où je les utilise et si oui, de quelle façon puis-je le faire. Voici un exemple concret : Lors de la transmission d'un formulaire, je veux valider un à un, à l'aide des annotations, les courriels se trouvant dans une liste de destinataires dans un message.

    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
     
    public class Message {
     
    	private Integer idMessage;
    	private String sujet;
    	private List<MessageDestinataire> listeDestinataires;
     
    // Getters et setters dont : 
     
    @StringLengthFieldValidator(trim = true, maxLength = "500", message = "Le sujet est trop long. (500 caractères maximum)")
    	public String getSujet() {
    		return sujet;
    	}
     
    public List<MessageDestinataire> getListeDestinataires() {
    		return listeDestinataires;
    	}
     
    	public void setListeDestinataires(List<MessageDestinataire> listeDestinataires) {
    		this.listeDestinataires = listeDestinataires;
    	}
    }
     
     
    public class MessageDestinataire {
     
    	private Integer idMessageDestinataire;
    	private Integer idMessage;
    	private String courriel;
     
    // Getters et setters dont : 
    	@EmailValidator(message="Le courriel est invalide.")
    	public String getCourriel() {
    		return courriel;
    	}
     
    }
    La validation du sujet fonctionne très bien, tandis que la validation du courriel n'est jamais effectuée.

    Merci de votre aide!

    Christian

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Par défaut
    Je viens de lire sur le site de xwork que cette fonctionnalité est présentement en mode expérimental sous forme de validateur de collection. Pour l'instant, il faut se contenter d'effectuer nos validations autrement.

    Merci.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2009
    Messages : 14
    Par défaut
    Pour ceux que ça intéresse, voici ma façon d'effectuer mes validations à l'aide des annotations sur des objets situés dans des listes :

    J'ai créé un nouveau «validateur» qui fait simplement enlever les éléments null d'une liste avant de lancer ses validations :

    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
     
    public class ValidateurListe extends VisitorFieldValidator implements Validator {
     
    	@SuppressWarnings("unchecked")
    	public void validate(Object object) throws ValidationException {
            this.defaultMessage = "";
    		String fieldName = getFieldName();
        	Object value = this.getFieldValue(fieldName, object);
            if (value != null) {
            	List<Object> liste = (List<Object>) value;
    			if (liste != null) {
    				Iterator<Object> it = liste.iterator();
    				Object temp = null;
    				List<Object> enlever = new ArrayList<Object>();
    				while (it.hasNext()) {
    					temp = it.next();
    					if (temp == null) {
    						enlever.add(temp);
    					}
    				}
    				liste.removeAll(enlever);
    				if (liste != null) {
    					super.validate(liste);
    				}
    			}
            }
        }
    }
    J'appelle ce validateur avec l'annotation suivante au dessus de mes listes à valider.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    @CustomValidator(type="validateurListe")
    public List<MessageDestinataire> getListeDestinataires() {
    	return listeDestinataires;
    }

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

Discussions similaires

  1. Annotation List Spring
    Par fabigol dans le forum Spring
    Réponses: 1
    Dernier message: 27/03/2015, 18h32
  2. [EJB3 Entity] Problème avec les annotations pour une List d'Enum
    Par uiscias dans le forum Java EE
    Réponses: 2
    Dernier message: 31/03/2009, 17h09
  3. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25
  4. Compter le nombre ligne listée (COUNT) ?
    Par StouffR dans le forum Langage SQL
    Réponses: 7
    Dernier message: 02/09/2002, 09h41
  5. Listes déroulantes liées entre elles
    Par denisC dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 27/07/2002, 15h53

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