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][logic iterate]


Sujet :

Struts 1 Java

  1. #1
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut [struts][logic iterate]
    Bonjour


    environnement windows
    pas d'IDE : juste ultra edit et ant pour compiler
    tomcat 5.5.9

    voilà mon probleme j'essaie d'utiliser la balise logic iterate

    voici le code de ma JSP


    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
     
    <logic:iterate id="listeEquipe" name="listeTeam" > 
    					<tr>
    						<td><bean:write name="listeEquipe" property="Team._rank"/></td>
    						<td><bean:write name="listeEquipe" property="Team._teamName"/></td>
    						<td><bean:write name="listeEquipe" property="Team._points"/></td>
    						<td><bean:write name="listeEquipe" property="Team._played"/></td>
    						<td><bean:write name="listeEquipe" property="Team._win"/></td>
    						<td><bean:write name="listeEquipe" property="Team._draw"/></td>
    						<td><bean:write name="listeEquipe" property="Team._loose"/></td>
    						<td><bean:write name="listeEquipe" property="Team._forward"/></td>
    						<td><bean:write name="listeEquipe" property="Team._against"/></td>
    						<td><bean:write name="listeEquipe" property="Team._difference"/></td>
    					</tr>
    					</logic:iterate>


    dans ma classe Action je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("listeTeam",listeTeam);
    où listeTeam est en fait une liste d'objet Team

    et dans ma classe Team je fais

    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
    45
    46
    47
    48
    49
    50
    51
    52
     
     
    package com.germany.objets;
    import org.apache.struts.action.ActionForm;
     
     
    public class Team extends ActionForm {
     
    	private String _teamName = "";
    	private int _rank = 0;
    	private int _points = 0;
    	private int _played = 0;
    	private int _loose = 0;
    	private int _win = 0;
    	private int _draw = 0;
    	private int _forward = 0;
    	private int _against = 0;
    	private int _difference = 0;
     
    	public Team(){}
     
    	public Team(String nom_,int rank_,int points_,int played_,int loose_,int win_,int draw_,int forward_,int against_,int difference_){
    		this._teamName = nom_;
    		this._rank = rank_;
    		this._points = points_;
    		this._played = played_;
    		this._loose = loose_;
    		this._win = win_;
    		this._draw = draw_;
    		this._forward = forward_;
    		this._against = against_;
    		this._difference = difference_;
    	}
    	public String getTeamName(){
    		return this._teamName;
    	}
    	public void setTeamName(String teamName_){
    		this._teamName=teamName_;
    	}
     
       public int getPoints(){
    		return this._points;
    	}
    	public void  setPoints(int points_){
    		this._points=points_;
    	}
     
    //etc je fais pareil avec tous les attributs 
     
     
     
    }
    et enfin mon code erreur
    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
     
    javax.servlet.ServletException: No getter method for property: "Team._rank" of bean: "listeEquipe"
    	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:848)
    	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)
    	org.apache.jsp.jsp.groupResult_jsp._jspService(org.apache.jsp.jsp.groupResult_jsp:212)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1062)
    	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
     
     
    cause mère 
     
    javax.servlet.jsp.JspException: No getter method for property: "Team._rank" of bean: "listeEquipe"
    	org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:986)
    	org.apache.struts.taglib.bean.WriteTag.doStartTag(WriteTag.java:225)
    	org.apache.jsp.jsp.groupResult_jsp._jspx_meth_bean_write_0(org.apache.jsp.jsp.groupResult_jsp:389)
    	org.apache.jsp.jsp.groupResult_jsp._jspService(org.apache.jsp.jsp.groupResult_jsp:148)
    	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:322)
    	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
    	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    	org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1062)
    	org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <td><bean:write name="listeEquipe" property="_rank"/></td>
    il faut donner le nom de la property, la classe est celle du bean..

    evite de nommer les attributs du bean comme _xxx, ce n'est pas conforme au régles de nommage java et risque d'avoir quelques problèmes avec certains frameworks..

    les java bean doivent respecter des regles:

    un attribut appelé String variable, getter et setter doivent avoir la signature suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public String getVariable(); public void  setVariable(String var);

  3. #3
    zl
    zl est déconnecté
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 75
    Points : 90
    Points
    90
    Par défaut
    Ta class Team ne doit pas étendre ActionForm:

    package com.germany.objets;
    import org.apache.struts.action.ActionForm;


    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
    45
    46
    public class Team extends { 
     
       private String _teamName = ""; 
       private int _rank = 0; 
       private int _points = 0; 
       private int _played = 0; 
       private int _loose = 0; 
       private int _win = 0; 
       private int _draw = 0; 
       private int _forward = 0; 
       private int _against = 0; 
       private int _difference = 0; 
     
       public Team(){} 
     
       public Team(String nom_,int rank_,int points_,int played_,int loose_,int win_,int draw_,int forward_,int against_,int difference_){ 
          this._teamName = nom_; 
          this._rank = rank_; 
          this._points = points_; 
          this._played = played_; 
          this._loose = loose_; 
          this._win = win_; 
          this._draw = draw_; 
          this._forward = forward_; 
          this._against = against_; 
          this._difference = difference_; 
       } 
       public String getTeamName(){ 
          return this._teamName; 
       } 
       public void setTeamName(String teamName_){ 
          this._teamName=teamName_; 
       } 
     
       public int getPoints(){ 
          return this._points; 
       } 
       public void  setPoints(int points_){ 
          this._points=points_; 
       } 
     
    //etc je fais pareil avec tous les attributs 
     
     
     
    }

    Et ta JSP doit être 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
    <logic:iterate id="listeEquipe" name="listeTeam" > 
                   <tr> 
                      <td><bean:write name="listeEquipe" property="_rank"/></td> 
                      <td><bean:write name="listeEquipe" property="_teamName"/></td> 
                      <td><bean:write name="listeEquipe" property="_points"/></td> 
                      <td><bean:write name="listeEquipe" property="_played"/></td> 
                      <td><bean:write name="listeEquipe" property="_win"/></td> 
                      <td><bean:write name="listeEquipe" property="_draw"/></td> 
                      <td><bean:write name="listeEquipe" property="_loose"/></td> 
                      <td><bean:write name="listeEquipe" property="_forward"/></td> 
                      <td><bean:write name="listeEquipe" property="_against"/></td> 
                      <td><bean:write name="listeEquipe" property="_difference"/></td> 
                   </tr> 
                   </logic:iterate>


    Zl.

  4. #4
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    oui mais dans mon GroupAction je ne dois plus faire reference à mon form et dans mon struts-config j'aurais un probleme puisque ce que ce n'est plus un actionform ... non ?
    je comprends pas trop là ...

  5. #5
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    et d'ailleurs j'ai le message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    java.lang.IllegalArgumentException: Resources cannot be null.
    	org.apache.commons.validator.Validator.<init>(Validator.java:188)
    	org.apache.struts.validator.Resources.initValidator(Resources.java:475)
    	org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:104)
    	org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:927)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:204)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

  6. #6
    Rédacteur

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    4 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 184
    Points : 5 059
    Points
    5 059
    Par défaut
    salut

    premièrement change la définition des property et setters et getters:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    private int _points;
    public int getPoints(){
          return this._points;
       }
       public void  setPoints(int points_){
          this._points=points_;
       }
    ne risque pas marcher avec Struts.

    Ce qu'il faut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    private int points;
    public int getPoints(){
          return this.points;
       }
       public void  setPoints(int points){
          this.points=points;
       }
    Ceci est conforme à la specifications Java Bean: Struts cherche à recuperer la valeur de points en appelant getPoints() ..

  7. #7
    zl
    zl est déconnecté
    Membre régulier
    Inscrit en
    Août 2005
    Messages
    75
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 75
    Points : 90
    Points
    90
    Par défaut
    Les formulaires struts n'aiment pas trop les variables non initializées. Par exemple, si dans ton bean tu as:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private String[] labels;
     
    //....
     
    public String[] getLabels(){
     return labels;
    }
    Si à un moment donné, tu veux afficher la variable labels dans un select par exemple et que à ce moment là, labels vaut null alors ton tag select ne va pas trop apprécier. La solution est de faire un truc dans le style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String[] getLabels(){
     return ((labels != null)?labels:new String[]{});
    }
    Pour info, j'ai rencontré ce problème avec Struts 1.0.x , peut être qu'il a été corrigé entre temps.

    Zl.

  8. #8
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    merci à tous les deux je corrige mes erreurs au fur et à mesure
    et en corrigeant ma page jsp j'obtiens mon resultat escompté

    ceci dit j'ai encore une question( mais je pense que je vais quand même faire un tour sur le site de Sun pour en savoir plus) : pour les beans le type de retour des setter doit etre obligatoirement un String comme l'as dit Sniper37 ?

  9. #9
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    bon ben je viens d'avoir ma reponse lol sur le site de ...sun

    http://java.sun.com/docs/books/tutorial/javabeans/properties/properties.html

    donc pas forcement de code retour String ...cf lien en tout cas merci à tous et bonne journée

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

Discussions similaires

  1. [Struts] logic iterate / bean write
    Par sg-40 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 16/06/2005, 16h35
  2. [Struts] <logic:iterate> sur une collection d objets c
    Par trax020 dans le forum Struts 1
    Réponses: 2
    Dernier message: 12/05/2005, 01h11
  3. [ STRUTS ] [ LOGIC:ITERATE ] tableau dans un formulaire
    Par LoulouFifi dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/06/2004, 17h19
  4. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 10h39
  5. [Struts] logic:iterate avec un Vector
    Par laurentb dans le forum Struts 1
    Réponses: 18
    Dernier message: 03/03/2004, 15h42

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