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 :

[STRUTS] Affichage d'une valeur provenant d'une méthode


Sujet :

Struts 1 Java

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut [STRUTS] Affichage d'une valeur provenant d'une méthode
    J'aimerais afficher à l'aide des balises struts, une valeur qui serait non pas stockée dans un champ, mais renvoyer par une méthode de l'objet.

    Exemple, imaginons que j'ai un objet personne, dans lequel j'ai la propriété date de naissance (dateNaissance) et que je veuille afficher son âge à l'aide de la méthode getAge().

    Si j'avais l'âge stocké dans une propriété, je l'afficherais comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:write name="PERSONNE" property="age" />
    Mais mon problème est que c'est une méthode.
    Comment faire s'il vous plait ?

    Merci

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2004
    Messages : 882
    Points : 948
    Points
    948
    Par défaut
    dans ton action tu effectues ton calcul et apres tu le mets dans le scope request par exemple

    Sun Certified Business Component Developer
    Sun Certified Java Programmer
    --
    The definitive toolbox for GWT applications: gwt-toolbox
    My blog about Java and JEE: Benjamin's Blog

  3. #3
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    passes par la taglig struts-el, et tu fais un ${PERSONNE.age}

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je ne peux malheureusement pas faire cela, car mon affichage concerne un enregistrement qui se répéte plusieurs fois.

    J'ai une hiérarchie un peu compliqué :
    j'ai un objet qui a des propriétés puis une liste d'objet, qui ont eux même des attributs et parmi eux, des listes encore.

    Au final, ton idée me permet de contourner le problème, mais pas vraiment de le régler. En l'occurence, je ne peux pas l'exploiter.

    Merci quand même !

    Je monte le code ici :
    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
     
    <!-- GARANTIE -->
    <logic:present name="GARANTIE">
    <table bordercolor="white" border="0" cellpadding="0" cellspacing="1" width="20%" align="center"  style="font-family:Verdana;">
    <tr style="font-size:14px;color:#113274;font-weight:bold;background-color:white" align="center" height="20">
    <td>Garantie <bean:write name="GARANTIE" property ="nom" /></td>
    </tr>
    <tr style="font-size:10px;color:#113274;font-weight:bold;background-color:white" align="center" height="20">
    <td>&nbsp;</td>
    </tr>
    </table>
     
    <!-- LISTE PALETTES -->
    <table bordercolor="white" border="0" cellpadding="0" cellspacing="1" width="50%" align="center">
    <logic:iterate name="GARANTIE" property="listePalettes" id="PALETTE">
    <tr style="font-family:Verdana;font-size:10px;background-color:green;color:white;font-color:bold" height="20"> 
    <td width="100%" align="left" colspan="2">&nbsp;<bean:write name="PALETTE" property ="typePalette.description" /></td>
    </tr>
    <!-- PALETTE -->
    <logic:iterate name="PALETTE" property="listeGroupesActe" id="GROUPE_ACTE">
    <tr style="font-family:Verdana;font-size:10px;background-color:white;color:green;font-color:bold" height="20"> 
    <td width="50%" style="background-color:white;color:green" align="left">&nbsp;<bean:write name="GROUPE_ACTE" property ="typeGroupeActe.description" /></td>
    <td width="50%" style="background-color:#FFFF99;color:#000088" align="left">&nbsp;<bean:write name="GROUPE_ACTE" property ="typeGroupeActe.getDescription" /></td>
    </tr>
    </logic:iterate>
    </logic:iterate>
    </table>
    </logic:present>

  5. #5
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    A mon avis, si tu mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:write name="PERSONNE" property="age" />
    Ca fonctionnera.
    Le truc, c'est que Struts, quand tu met un nom de propiété, il cherche un getter (une methode donc) qui s'appele getNomPropriété. Après, que cette methode fasse directement un return d'un attribut ou un calcul, je pense qu'il s'en fout.
    Testes, tu seras fixé.
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 169
    Points : 80
    Points
    80
    Par défaut
    Est ce que quand tu fais un getter t'es obligé d'avoir un champs associé à ta méthode? Je n'en suis pas sur.

    Quand tu fais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <bean:write name="PERSONNE" property="age" />
    Tu appelles bien le getter getAge() et non la propriété age.

    Tu peux très bien avoir une méthode dans ton objet et faire la même chose.

    Enfin je crois....

  7. #7
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Je simplifie, admettons que j'ai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <logic:iterate name="ENTREPRISE" property="listeEmployes" id="PERSONNE">
      <tr> 
        <td>&nbsp;<bean:write name="PERSONNE" property ="nom" /></td>
        <td>&nbsp;<bean:write name="PERSONNE" property ="age" /></td>
      </tr>
    </logic:iterate>
    Comment faire pour que mettre effectivement l'age alors que je n'ai pas l'attibut age mais que j'ai par contre une méthode getAge() ??

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

    Informations forums :
    Inscription : Octobre 2003
    Messages : 169
    Points : 80
    Points
    80
    Par défaut
    Ben tu fais exactement ça!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:iterate name="ENTREPRISE" property="listeEmployes" id="PERSONNE"> 
      <tr> 
        <td>&nbsp;<bean:write name="PERSONNE" property ="nom" /></td> 
        <td>&nbsp;<bean:write name="PERSONNE" property ="age" /></td> 
      </tr> 
    </logic:iterate>

  9. #9
    Membre expérimenté
    Avatar de viena
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    1 071
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 071
    Points : 1 512
    Points
    1 512
    Par défaut
    Et bien, en faisant exactement ce que tu donnes dans ton code...
    Cours et tutoriels pour apprendre Java , FAQ Java, et Forum Java
    "La liberté de tout être s'arréte là où commence celle de l'autre... Respecter l'autre, c'est préserver sa liberté d'être, de penser et de vivre"

  10. #10
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par RanDomX
    passes par la taglig struts-el, et tu fais un ${PERSONNE.age}
    tiens, je l'avais pas vu celle là !

    je vais essayer

  11. #11
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Oui, on m'a dit que si je mettais le champ, il irait chercher le get correspondant s'il existait.
    Il existe, mais il m'affiche quand même l'erreur qu'il ne trouve pas de getter.

    En fait, mon code est plutôt comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <logic:iterate name="PALETTE" property="listeGroupesActe" id="GROUPE_ACTE">
      <tr> 
        <td><bean:write name="GROUPE_ACTE" property="typeGroupeActe.description" /></td>
        <td><bean:write name="GROUPE_ACTE" property="typeGroupeActe.description2" /></td>
      </tr>
    </logic:iterate>
    J'ai ajouté le descprition2 pour tester :
    - l'attribut n'existe pas
    - j'ai ajouté une méthode getDescription2()
    [/quote]

  12. #12
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    J'ai rééssayé !
    Ca marche !!

    Merci beaucoup à vous tous de m'avoir montré la lumière.
    Je suis un gros newbee dans toutes ces nouvelles technos, mais j'espère qu'un jour j'aurais assez progressé pour vous aider en retour :p

  13. #13
    Membre expérimenté
    Avatar de RanDomX
    Profil pro
    sans
    Inscrit en
    Mars 2003
    Messages
    579
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Mars 2003
    Messages : 579
    Points : 1 407
    Points
    1 407
    Par défaut
    hum je pense que tout ca passe par introspection et donc l'attribut doit etre présent.

  14. #14
    Candidat au Club
    Inscrit en
    Mai 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 7
    Points : 2
    Points
    2
    Par défaut
    Eh bien, ça marche, mais l'attribut n'est pas présent.

    J'ai mis le code suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <logic:iterate name="PALETTE" property="listeGroupesActe" id="GROUPE_ACTE">
      <tr>
        <td><bean:write name="GROUPE_ACTE" property="typeGroupeActe.description" /></td>
        <td><bean:write name="GROUPE_ACTE" property="typeGroupeActe.descriptionBis" /></td>
      </tr>
    </logic:iterate>
    ET ma classe est comme suit :

    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
     
    public class TypeGroupeActe {
     
        private Integer idTypeGroupeActe;
        private String description;
        private String commentaire;
        private String affichOblig;
        private Integer affichOrdre;
     
     
        public Integer getIdTypeGroupeActe() {
            return idTypeGroupeActe;
        }
        public void setIdTypeGroupeActe(Integer idTypeGroupeActe) {
            this.idTypeGroupeActe = idTypeGroupeActe;
        }
        public String getDescription() {
            return description;
        }
        public String getDescriptionBis() {
            return "coucou";
        }
        public void setDescription(String description) {
            this.description = description;
        }
        public String getCommentaire() {
            return commentaire;
        }
        public void setCommentaire(String commentaire) {
            this.commentaire = commentaire;
        }
        public String getAffichOblig() {
            return affichOblig;
        }
        public void setAffichOblig(String affichOblig) {
            this.affichOblig = affichOblig;
        }
        public Integer getAffichOrdre() {
            return affichOrdre;
        }
        public void setAffichOrdre(Integer affichOrdre) {
            this.affichOrdre = affichOrdre;
        }
    }

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

Discussions similaires

  1. tester une valeur et affecter une valeur
    Par Elise0251 dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 29/07/2009, 16h31
  2. Réponses: 1
    Dernier message: 02/04/2007, 15h49
  3. Réponses: 10
    Dernier message: 30/11/2006, 23h06
  4. Réponses: 4
    Dernier message: 15/09/2006, 17h28
  5. récupération d'une valeur provenant d'une popup
    Par boss_gama dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/09/2006, 17h45

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