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 :

probleme property <logic:iterate>


Sujet :

Struts 1 Java

  1. #1
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut probleme property <logic:iterate>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <logic:iterate id="ProduitForm" name="listeInformatique">
    <tr>
    <td><bean:write name="ProduitForm" property="nom_produit"/></td>
    <td><bean:write name="ProduitForm" property="prix"/></td>
    <td><bean:write name="ProduitForm" property="description"/></td>
    </tr>
    </logic:iterate>
    j'ai utilisé ce code dans une jsp pour récupérer les champs nom_produit, prix, et description, qunad je lance mon appli, j'ai ce message :

    javax.servlet.ServletException: No getter method for property: "nom_produit" of bean: "ProduitForm"
    pourtant j'ai bien mis les getters et setters de mon javabean ProduitForm,
    quelqu'un peut il m'aider

    merci 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
    Pour que ce code fonctionne, il faut :

    - avoir ajouter dans la jsp les directives taglib qui pointent sur struts-logic.tld et struts-bean.tld.
    - avoir créer une ArrayList de beans Produit.

    Est-ce bien le cas ?

    Pour info, les getters et setters sur les propriétés nom_produit, prix et description doivent être dans la classe Produit et non dans l'ActionForm.

    De plus, pour respecter les conventions de nommage java, il serait bien de renommer nom_produit par nomProduit ou tout simplement nom.
    Modératrice Java - Struts, Servlets/JSP, ...

  3. #3
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut
    je vien de refaire ma classe Produit en respectant ce que tu m'as dis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Produit{
     
    	private String nomProduit;
    	private int prix;
    	private String description;
     
     
    	//  Constructeur par défaut...
    	public Produit(){}
     
    	//	 Getteurs et setteurs...
            ...
    dans mon actionListeInformatique, je me connecte a la base, et je retourne l'objet de type Arraylist info:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // C'est bon...
    	request.setAttribute("listeInformatique", info);
    	return mapping.findForward("AfficherListeInfo");
    puis dans la page jsp, j'affiche ces elements
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     <logic:iterate id="Produit" name="listeInformatique">
             <tr>
                <td><bean:write name="Produit" property="nomProduit"/></td>
                <td><bean:write name="Produit" property="prix"/></td>
                <td><bean:write name="Produit" property="description"/></td>
             </tr>
          </logic:iterate>
    je ne sais ce qui me manque exactement, peux tu me donner des explications, c'est un peu compliqué tout ca au debut !!!

    merci d'avance !!!

  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
    Tu as toujours la même erreur ?
    Tu as bien codé les directives taglib qui pointent sur les tld dans ta jsp ?
    Modératrice Java - Struts, Servlets/JSP, ...

  5. #5
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut
    j'ai mnt ca comme erreurs:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    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)
    oui, j'a bien ajouté les taglibs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <%@taglib uri="/tags/struts-bean" prefix="bean"%>
    <%@taglib uri="/tags/struts-html" prefix="html"%>
    <%@taglib uri="/tags/struts-logic" prefix="logic"%>

  6. #6
    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
    Apparemment, tu utilises le Validator mais as-tu bien défini le fichier des messages dans le struts-config.xml ?

    Sinon, que valides-tu via le Validator ?
    Pour afficher une ArrayList, je ne vois pas bien l'intérêt d'utiliser le Validator.
    Modératrice Java - Struts, Servlets/JSP, ...

  7. #7
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut
    je ne pense pas que j'utilise le validator, je sais meme pas ce que c'est!
    en gros, dans mon fichier ActionListeInformatique, j'interroge la base de donnée, je recupere les champs nom_produit, prix, et description pour les afficher dans la page jsp, mais je savais pas comment faire pour recuperer ces champs, donc j'ai crée la classe produit pour faire le lien, mais je comprends tjrs pas comment il fat le lien entre l'objet info (de type arraylist) et ma classe,

    je sais pas si ma methode est correcte : ma page jsp se presente ainsi :
    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
    <%@taglib uri="/tags/struts-bean" prefix="bean"%>
    <%@taglib uri="/tags/struts-html" prefix="html"%>
    <%@taglib uri="/tags/struts-logic" prefix="logic"%>
     
    <html:html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Produits informatiques</title>
    </head>
    <body>
    		<center> 
    			<h1>LISTE DES PRODUITS</h1>
    			<br /><br />
    			Catégorie : Informatique
    			<br /><br />
    		</center>	
    		<table border="1">
             <tr>
                <td>nom_produit</td>
                <td>prix</td>
                <td>description</td>
             </tr>
          <logic:iterate id="Produit" name="listeInformatique">
             <tr>
                <td><bean:write name="Produit" property="nomProduit"/></td>
                <td><bean:write name="Produit" property="prix"/></td>
                <td><bean:write name="Produit" property="description"/></td>
             </tr>
          </logic:iterate>
          </table>
      </body>
    </html:html>
    merci !!!

  8. #8
    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
    As-tu regardé mon dernier message dans la discussion suivante où je t'explique comment créer une ArrayList de beans Produit ?
    Modératrice Java - Struts, Servlets/JSP, ...

  9. #9
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut
    dans le config, j'ai tapé ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <form-beans>
      		<form-bean name="Produit" type="forms.Produit"/>
    </form-beans>
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action path="/informatique" type="actions.ActionListeInformatique" name="Produit" scope="session" input="/pages/informatique.jsp">	
        		<forward name="AfficherListeInfo" path="/pages/informatique.jsp" redirect="false"/>
        		<forward name="Echec" path="/pages/erreurs.jsp" redirect="false"/>
        	 </action>

  10. #10
    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
    La classe Produit n'est pas une ActionForm.
    Il ne faut donc pas la déclarer dans la balise form-bean et dans le mapping de l'Action non plus.
    Modératrice Java - Struts, Servlets/JSP, ...

  11. #11
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut
    Si je declare pas la classe, comment elle sera reconnu, il faut rajouter un usebean dan la page jsp???

    sinon, j'ai fais en sorte que quand je clique sur un lien, je declenche /informatique : l'actionListeinformatique interroge la base et me renvoit les données, comment le faire sans le mapping

  12. #12
    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
    Pour afficher l'ArrayList de beans, il n'est pas utile de déclarer le bean dans la page jsp.
    Tu as mis l'ArrayList de beans dans le scope request, elle est donc accessible dans la jsp.
    Dans le mapping de ton Action, il suffit de coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <action path="/informatique" type="actions.ActionListeInformatique">	
    	<forward name="AfficherListeInfo" path="/pages/informatique.jsp" redirect="false"/>
    	<forward name="Echec" path="/pages/erreurs.jsp" redirect="false"/>
    </action>
    Modératrice Java - Struts, Servlets/JSP, ...

  13. #13
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut
    dans ce cas, mon bean Produit ne sert à rien, comment je peux afficher l'arrylist alors, je veux dire produit, je le remplace par quoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <logic:iterate id="Produit" name="listeInformatique">
             <tr>
                <td><bean:write name="Produit" property="nomProduit"/></td>
                <td><bean:write name="Produit" property="prix"/></td>
                <td><bean:write name="Produit" property="description"/></td>
             </tr>
          </logic:iterate>
    j'ai codé comme ca, il m'affiche cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    javax.servlet.ServletException: No getter method for property: "nomProduit" of bean: "Produit"
    merci de ton aide..

  14. #14
    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
    Je repose la question que je t'ai posé plus haut car je pense que tu ne l'as pas vu :
    Citation Envoyé par c_nvy
    As-tu regardé mon dernier message dans la discussion suivante où je t'explique comment créer une ArrayList de beans Produit ?
    Modératrice Java - Struts, Servlets/JSP, ...

  15. #15
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut
    j'avais pas vu ton message..
    je te remercie bcp, j'ai essayé ce que tu m'as dis, et ca marche,

  16. #16
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut
    j'ai une autre question bete surement:
    dans mon projet, j'ai un menu de produits, (informatique, livres, etc..)
    j'ai changé actionListeInformatique en actionListeProduit pour afficher a chaque fois la liste des produits que l'on veut en interrogeant la base de données,
    le probleme est que j'arrive pas a recuperer le nom de la catégorie que je veux afficher,
    merci d'avance !!!
    j'ai pensé a request.get???

  17. #17
    En attente de confirmation mail
    Inscrit en
    Février 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 134
    Points : 61
    Points
    61
    Par défaut
    c bon, j'ai trouv une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    String chaine = request.getServletPath();
    String categorie = chaine.substring(1,chaine.length()-3);
    merci de ton aide c_nvy

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

Discussions similaires

  1. probleme de logic iterate
    Par rajoua dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/08/2008, 10h57
  2. Probleme avec Logic:iterate
    Par ForHuman dans le forum Struts 1
    Réponses: 7
    Dernier message: 17/07/2008, 16h05
  3. [EJB][jboss][struts]probleme de logic:iterate
    Par jamal_b dans le forum Wildfly/JBoss
    Réponses: 25
    Dernier message: 27/04/2006, 20h46
  4. [Struts][logic:iterate] Probleme avec String
    Par julienOriano dans le forum Struts 1
    Réponses: 7
    Dernier message: 15/06/2004, 09h39

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