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 :

Test d'une String dans un Iterator ( <s:iterator, <s:if )


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut Test d'une String dans un Iterator ( <s:iterator, <s:if )
    Bonjour !

    J'ai un ptit problème de test sur une chaine de caractère. J'arrive a récupérer la chaine comme il faut, mais lorsque j'essaye de tester l'égalité des chaines, je rentre toujours dans le 'else' ...

    Alors voila, j'ai un iterator qui contient des objets 'Operation' :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class Operation {
        private String date = null;
        private int idUser;
        private String montant = null;
        private String plusOuMoins = null;
     
        public Operation(){
     
        }
     
        [...]
    Dans ma jsp, je veux afficher la liste des 'Operation' de l'iterator, mais en faisant un test sur une des variables de l'objet Operation pour afficher du html différent suivant le résultat du test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <s:iterator value="listOperation">   
        <s:if test="#plusOuMoins.equals('+')">   /* <-------C'est ici que ca foire! :) */ 
            <div class="operation plus">
                  [...]
            </div>
        </s:if>
        <s:else>
            <div class="operation moins">
                  [...]
            </div>
        </s:else>
    </s:iterator>
    <s:property value="plusOuMoins"/> renvoi bien la bonne valeur (+ ou -), mais je n'arrive pas a faire de tests sur cette String...

    Comment faire le test sur l'attribut d'un objet ?
    Merci d'avance!

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 10
    Par défaut
    post maj... et up en même temps!

  3. #3
    Membre confirmé Avatar de arnaud.tlse
    Profil pro
    Étudiant
    Inscrit en
    Avril 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2008
    Messages : 115
    Par défaut
    Salut,

    tu peux essayer ceci, je ne suis pas pro de Struts2, mais c'est comme ça que j'opère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <s:iterator id="operation" value="listOperation">   
        <s:if test="#operation.plusOuMoins == '+'">
                [...]
        </s:if>
        <s:else>
                [...]
        </s:else>
    </s:iterator>
    Sans oublier getters()/setters() sur l'attribut plusOuMoins.

  4. #4
    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
    Le problème ici est que lorsque tu as un seul caractère à comparer, il n'est plus considéré comme un String, mais bien comme un char. Donc "+" est différent de '+'. Pour que ta comparaison soit effectuée correctement, utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:if test='"+".equals(#plusOuMoins)'>

  5. #5
    Membre habitué

    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Par défaut
    Citation Envoyé par ChristianMartel Voir le message
    Le problème ici est que lorsque tu as un seul caractère à comparer, il n'est plus considéré comme un String, mais bien comme un char. Donc "+" est différent de '+'. Pour que ta comparaison soit effectuée correctement, utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <s:if test='"+".equals(#plusOuMoins)'>
    Merci pour cette réponse !! *%!#~ de syntaxe ognl...

  6. #6
    Membre confirmé Avatar de jeb001
    Profil pro
    Inscrit en
    Août 2005
    Messages
    212
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Août 2005
    Messages : 212
    Par défaut
    Bonjour,

    Je relance ce post, car je rencontre le même problème.. impossible de faire une comparaison de chaines de caractère dans un tag s:if..

    J'ai bien noté la subtilité pour différencier un String d'un char.. voici mon code :


    Pour debug : ${resp}
    <s:if test='"OK".equals(#resp)'>
    it works
    </s:if>
    <s:else>
    it doesn't
    </s:else>

    Il s'affiche à l'écran systématiquement :
    Pour debug : OK it doesn't.

    pourquoi ?

    Merci

Discussions similaires

  1. Conseil sur l'extraction d'une string dans une string
    Par Mickey.jet dans le forum Delphi
    Réponses: 3
    Dernier message: 02/06/2006, 14h54
  2. Réponses: 2
    Dernier message: 15/03/2006, 10h13
  3. Comment enregistrer une string dans un fichier
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/09/2005, 14h52
  4. Réponses: 12
    Dernier message: 27/06/2005, 19h06
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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