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] probleme champs dynamiques


Sujet :

Struts 1 Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut [struts] probleme champs dynamiques
    Bonjour,

    je viens de créer une page struts à ou je gere des données provenant d'une base de données.

    Dans mon ActionForm je possede un tableau de projets .Projet étant une classe qui possède 4 variables membres qui sont des strings (identifiant, libelle, direction et crédit)

    J'ai donc choisi d'utiliser le tag nested:iterate avec à l'intérieur le code suivant :

    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
     
    <TABLE>
    <nested:iterate id="it" name="GereGestionForm" property="projets" >
    <TR>
    <TD>
    <bean:write name="it" property="libelle" />
    </TD>
    <TD>
    <bean:write name="it" property="direction" />
     </TD>
     <TD>
      <nested:text name="it" property="credit" indexed="yes"/>
     </TD>
    </TR>   
    </nested:iterate>
    J'utilise nested car avec logic:iterate l'affichage ne fonctionne pas et qu'un précédent topic du forum suggere cette solution.

    Lorsque ma page s'affiche j'ai donc bien la totalité de mes projets avec pour chaque le crédit correspondant (preuve que l'iteration se fait correctement). Les informations de la base de données sont bien transferrés dans le formulaire.

    Le problème vient du fait que lorque je modifie le crédit alloué à divers projets et que je fais un submit, lorque je fais dans mon Action un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    PropertyUtils.getSimpleProperty(aForm, "projets");
     
    ou un
     
    PropertyUtils.getNestedProperty(aForm, "projets");
    Je récupère le tableau d'origine sans avoir obtenu les modifications désirées.

    Si quelqu'un à une solution ???

    Merci d'avance.

  2. #2
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    et enrécupérant juste la propriété credit ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Le problème , c'est que le champ crédir est inconnu de mon ActionForm puisqu'il se trouve à l'intérieur de mon tableau projets.

    Deplus comme je peux avoir n projets, je vais devoir faire n récupération !!

  4. #4
    Membre habitué Avatar de meufeu
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    355
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 355
    Points : 166
    Points
    166
    Par défaut
    oui mais cela permet de cibler le probleme ...
    si tu arrive a avoir un champ credit modifié, on en saura +

  5. #5
    Membre régulier
    Inscrit en
    Octobre 2003
    Messages
    93
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 93
    Points : 86
    Points
    86
    Par défaut
    Si dans ton Action tu castes le form passé en paramètre avec la classe correspondante et qu'ensuite tu accèdes aux objets de ta collection (en les castants à nouveau) tu ne récupères pas les bonnes valeurs ?

    Perso j'ai déjà géré des collections et j'ai jamais eu de problèmes sauf quand j'étais en scope request pour mon ActionForm car il n'arrivait pas à repeuplé mon ActionForm !

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Je teste et je reviens de suite !

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Bon j'ai testé de récupérer crédit, et j'ai une ServletException car la propriété crédit est incunnu.

    Maintenant , le fait de caster chacune des cases du tableau ne me parait pas obligatoire car j'utilise aussi un tableau de projets pour récupérer les infos.

    Je viens de regarder au debugger, et j'obtiens bien chacun des champs
    correspondants de la classe projet.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Ou alors vaudrait il mieux de charger chacun des champs du tableau plutôt que de charger le tableau directement ????

    Le fait que ce ne soit pas une collection mais un vrait tableau est-ce important ?

  9. #9
    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
    La technique c de remettre a jour le tableau complet.

    Je sais pas si ca reponds mais j'arrive pas à lire tout ces messages.

    @+

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Pourrais tu etre plue précis s'il te plait ???

    Merci

  11. #11
    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
    et bien en gros il faut que tu repostes toute la liste avec tous les champs, meme ceux qui n'ont pas changé

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Lorsque je fais un submit dans mon formulaire, le tableau ainsi que tous les champs du formulaires sont postés automatiquement, sans cela, je ne pourais pas récupérer les champs correspondants dans mon action .

    D'habitude cela fonctionne bien mais pas là !!

    Où et quand puis je faire le rafraichissement ??

    Merci

  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
    Qd tu submit un tableau ou plus generalement une collection, il faut absolument la remettre a zero ds la methode reset de ton bean

    Non pas la vider avec un clear par exemple ni la mettre a null, le recreer simplement a vide.


    @+

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Merci beaucoup

    Je test cela aujourd'hui et je reviens.

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Je viens de tester ta solution, et losque je fais le get property dans mon action, j'obtiens le tableau que je viens de réinitialiser.

    Donc ce n'est toujours pas cela.

    Merci quand même.

  16. #16
    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
    la methode reset est appelée systèmatiquement au debut de toute soumission.

    Donc ton tableau est vide puis reremplis par les infos que tu soumets.
    Aunfinal tu stocke bien les infos que tu viens de soummetre.


    Je pense que tu t'embrouille un peu les pinceau dans ton flow....

    Bon courage...
    @+

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    Je vois bien que ma méthode reset est appelée à chaque fois que je fais un submit.

    Mais le problème, c'est que je ne sais pas si la formulation de mon nested:iterate groupé avec mon html:text est correcte, et je pense que cela peut venir de là.

    Pour l'instants je n'ai que ces méthodes concernant mon tableau de projets dans ma form :

    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
     
    public ProjetModel[] getProjets() {
             return mProjets;
    }
     
    public ProjetModel getProjets(int aIndice) {
             return mProjets[aIndice];
    }
     
    public void setProjets(int aIndice, ProjetModel aValeur) {
             mProjets[aIndice] = aValeur;
    }
     
    public void setProjets(ProjetModel[] aProjets) {
             mProjets = aProjets;
    }
    Doit il y en avoir plus ??

    De plus, je viens de metre des points d'arrèts sur les méthodes get et set.

    Au final, les méthodes setProjets ne sont jamais appelé alors que les méthodes getProjets sont appelés lors des resets.

    Par contre , j'ai un champ caché et sa méthode set est bien appelé, donc je ne sais pas !

    Merci encore.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    je viens de regrder le source de la page jsp :

    code de la jsp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <nested:iterate id="it" name="GereGestionForm" property="projets" >
    <TR>
    <TD>
    <bean:write name="it" property="libelle" />
    </TD>
    <TD>
    <bean:write name="it" property="direction" />
    </TD>
    <TD>
    <nested:text name="it" property="credit" indexed="yes" />
    </TD>
    </TR>
    et voici le source de la page venant du navigateur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <TR>
    <TD>
    Mise en oeuvre de la flotte
    </TD>
    <TD>
    DMON
    </TD>
    <TD>
    <input type="text" name="credit" value="0">
    </TD>
    Ne devrait il pas y avoir dans le name : name="projets[0].credit" ou quelque chose s'en approchant et ce serai pour cela que les setters ne sont jamais appelés ????

  19. #19
    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
    nested:write n'existe pas ?

    je pense que c ca ton pb. J'avais pas vu.

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 47
    Points : 23
    Points
    23
    Par défaut
    je viens de tester nested:write et toujours pas de transmission de données.

    J'ai bien effacé le fichier _jsp.java et redémarré tomcat.

    Saurais tu où je pourrais trouver un code qui marche et sûr, que je puisse voir où sont mes erreurs. et éviter ainsi de monopoliser ton temps.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. acces champs dynamique probleme
    Par coolstuff_ dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 01/05/2006, 17h58
  2. [ struts ] probleme à l'exécution
    Par flogreg dans le forum Struts 1
    Réponses: 12
    Dernier message: 23/08/2004, 12h11
  3. [CR] Taille champ dynamique
    Par reflex dans le forum SAP Crystal Reports
    Réponses: 7
    Dernier message: 06/08/2004, 08h43
  4. [LG]Problême Variable dynamique de types différents
    Par pierrOPSG dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 16h01
  5. ajouter un champ dynamiquement à une instance de table
    Par maniack dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/02/2004, 23h58

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