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 :

Modifier et sauvegarder les valeurs d'un tableau


Sujet :

Struts 1 Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut Modifier et sauvegarder les valeurs d'un tableau
    Bonjour à tous,

    J'ai une page Jsp qui contient un tableau m'affichant des valeurs que je charge à partir d'une base de données (utilisant hibernate) si je choisit l'option consultation,cependent j'ai ajouter une option modification qui doit me permettre d'afficher mes valeurs sur le tableau comme le cas de la consultation et en outre je pourrais changer les veleurs affichées sur les cellules du tableau .

    Le problème c'est que je ne sait vraiment pas par ou commencer dans le cas de la modification .Dois-je transformer mes cellules à des textearea pour permettre l'écriture sur mes tableaux, comment pourrais-je sauvegarder chaque changment affectant les cellules du tableau.

  2. #2
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 084
    Points : 1 956
    Points
    1 956
    Par défaut
    ouui tu peux mettre des textearea ou sinon de manière plus élégante, tu peux mettre des boutons d'édition à chaque fin de ligne. Lorsque tu cliques dessus, tu as un popup qui s'ouvre.

  3. #3
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par weed Voir le message
    ouui tu peux mettre des textearea ou sinon de manière plus élégante, tu peux mettre des boutons d'édition à chaque fin de ligne. Lorsque tu cliques dessus, tu as un popup qui s'ouvre.
    En fait je ne voit pas ce que vous voulez désigner par fin de ligne.
    Mais bon si vous parler d'une ligne de tableau,bah le probleme c'est que cette ligne contient plusieurs cellules .Alors comment pourrais-je désigner la cellule qui m'intersse dans cette ligne .Et je me pose toujours l'autre question :Comment pourais -je sauvegader mes modifications via une action?

  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
    Je te conseille d'utiliser les tags nested:iterate et nested:text.

  5. #5
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Je te conseille d'utiliser les tags nested:iterate et nested:text.
    Si je me rappel bien, le nested est utilisé sur les collections,cependant j'affiche mon tableau d'une maière disant classique ,voila une partie du code de ma jsp qui m'affiche le tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <td> <% if(test1.getobjet(AfficherTabAction.anny,"jav","type1") == null)   
             out.println("0");
           else  
             out.println(test1.getobjet(AfficherTabdAction.anny,"jav","type1").getBudget());%></td>
    Est ce que je pourrais toujours utiliser le tag nested ou bien je doit envisager d'autres alternatives ?

  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
    Il est bien dommage de mettre du code Java dans les jsp quand on utilise Struts.

    Enfin, de quel type est l'objet renvoyé par le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    test1.getobjet(AfficherTabdAction.anny,"jav","estime").getBudget());

  7. #7
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    En fait j'utilise hibernate pour accéder à une table budget_type.
    Dans cette table se trouve un champ id , année ,mois ,type(type du budget) ,budget(valeur du budget).

    Et donc le type de l'objet est lié à la table budget_type (mapping relationel object ).

    Vue que je veux afficher que le budget donc après mapping via hibernate ,j'applique la methode getbudget sur mon objet pour récupérer la valeur et l'inserer dans mon tableau

  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
    Tu me parles de tableau donc je suppose que tu n'affiches pas que le budget dans ce tableau ?

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Citation Envoyé par c_nvy Voir le message
    Tu me parles de tableau donc je suppose que tu n'affiches pas que le budget dans ce tableau ?
    Bah non , j'affiche que les valeurs des budgets selon des années et donc j'ai un tableau de 12 clonnes (les mois) ,et 4 lignes car j'ai 4 types de budget.Et donc pour mettre la bonne valeur du budget dans la bonne cellule ,je spécifie le mois et le type comme parametre .

    Mais j'affiche que des int qui representent les valeurs des budget tout simplment ,c'est entiers sont retournés par la fonction getbudget .

  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
    L'idéal, ce serait que le code Java qui permet de récupérer les valeurs des différentes cellules de ton tableau soit dans une méthode d'une classe.
    Cette méthode renverrait une collection d'objets et serait appelée dans l'Action qui s'exécute avant l'affichage du formulaire.
    Dans ton cas, ce pourrait être une collection d'objets ayant pour propriétés type, jan, fev, mar, avr, mai, jun, jul, aou, sep, oct, nov et dec.
    Cette collection d'objets serait une propriété de ton formulaire et alors, tu pourrais l'afficher et permettre la modification des budgets avec les tags nested :
    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
    <nested:form action="pathAction">
       <nested:iterate property="budgetTypeList">
          <nested:write property="type"/>
          <nested:text property="jan"/>
          <nested:text property="fev"/>
          <nested:text property="mar"/>
          <nested:text property="avr"/>
          <nested:text property="mai"/>
          <nested:text property="jun"/>
          <nested:text property="jul"/>
          <nested:text property="aou"/>
          <nested:text property="sep"/>
          <nested:text property="oct"/>
          <nested:text property="nov"/>
          <nested:text property="dec"/>
       </nested:iterate>
    </nested:form>

  11. #11
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Ou est ce que je peux trouver des cours sur les tags nested ,pour afficher et modifier les données .Et aussi sur la manipulation des collections pour récupérer des objets et les afficher sous formes de tableaux.

  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
    Je n'ai pas de tutoriel particulier à te conseiller.

    La plupart du temps, c'est simple parce que la disposition des données dans la table correspond à celle que tu affiches dans la jsp et qu'en plus, Hibernate via une query te permet de récupérer facilement la collection d'objets.

    Mais, là ce n'est pas le cas. Il faut que tu transposes les colonnes en lignes et donc, ça complique le traitement.

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    La plupart du temps, c'est simple parce que la disposition des données dans la table correspond à celle que tu affiches dans la jsp
    Mais, là ce n'est pas le cas. Il faut que tu transposes les colonnes en lignes et donc, ça complique le traitement.
    En effet c'est la remarque que je voulais soulever :dans ma table initialle j'ai 5 colonnes (id,année,mois,type,budget(valeur)).

    Alors que dans ma jsp comme je l'ai deja montionné j'ai un grand taleau de reporting avec 12 clonnes et 4 lignes .

    L'année je la spécifie dans ma page jsp via une liste déroulante ,alors que les mois et les types sont passés en prametre ds une fonction qui me retourne un objet (une ligne de ma table relationnelle) ,ce dernier je lui applique la methode getBudgetet je tombe à point sur la valeur du budget .

    C'est pour cela que j'ai adopter une methode mecanique pour afficher mes tableaux budget,cependant elle a des limites flagrantes.

  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
    Citation Envoyé par Viscapon
    En fait c'est pas le cas dans ma situation :dans ma table initialle j'ai 5 colonnes (id,année,mois,type,budget(valeur)).

    Alors que dans ma jsp comme je l'ai deja montionné j'ai un grand taleau de reporting avec 12 clonnes et 4 lignes .
    C'est bien ce que j'ai dit précédemment :
    Citation Envoyé par c_nvy Voir le message
    Mais, là ce n'est pas le cas. Il faut que tu transposes les colonnes en lignes et donc, ça complique le traitement.
    Moi aussi, j'ai été confronté à ce problème.

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Oui je viens de corriger mon poste j'ai vue votre remarque et vous avez tout a fait raison

  16. #16
    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
    Mais bon, le code Java que tu as mis dans la jsp, même s'il n'est pas optimisé, tu peux très bien le mettre dans une classe Java pour générer une collection d'objets, comme je te l'ai suggéré précédemment.

  17. #17
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    Bon ,après reflexion sur la solution que vous m'avez proposer c_nvy,j'ai esseyer de l'implémenter ,et vue que je suis pas très fort avec les collections ni avec les taglib struts ,j'ai decider d'aller un pas à la fois :

    D'abord j'ai crée une class finance qui me fournira les objets avec lequels je construirait ma collection en respectant les contraintes que vous m'avait proposé (type , 12mois) et ça donnait un truc du genre :


    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
     
     
    public class finance implements java.io.Serializable {
     
    	public String type1;
     
    	public Integer jav,fev,mars,avril, mai;
     
    	public Integer juin,juil,aout,oct,sep,no,dec;
     
     
    	public finance() {//constructeur
    	}
     
    	public Integer getJav() {
     
    		return test1.getcapex(CapexetdAction.anny,"jav",type1).getBudget();
    		//anny c'est une var recupérée de la liste deroulante année
     
     
    	}
     
                    public void setJav(Integer jav) {
    		test1.change(CapexetdAction.anny,"jav",type1,jav);
    	}
     
     
    //...... de meme pr les autres mois
    }
    J'espère avoir votre confiramtion avant de passer à autres chose,merci.

  18. #18
    Membre chevronné
    Profil pro
    MOA
    Inscrit en
    Décembre 2002
    Messages
    1 084
    Détails du profil
    Informations personnelles :
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : MOA

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 084
    Points : 1 956
    Points
    1 956
    Par défaut
    Je dirais que c'est en effet ce que te suggère c_navy.
    Cepandant ton exemple n'est pas tout à fait exact. Ton instance test1 est inconnu au bataillon de ta class finance. Il faut que tu insticie ton objet soit dans les propriétés de ta class finance soit directement dans tes méthodes...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class finance implements java.io.Serializable {
     
    	private String type1;
     
    	private Integer jav,fev,mars,avril, mai;
     
    	private Integer juin,juil,aout,oct,sep,no,dec;
            private LaClassDeMonTest1 test1 = new LaClassDeMonTest1(); 
     
    .....
    De plus, mets plutot tes propriétés en private

  19. #19
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    233
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 233
    Points : 67
    Points
    67
    Par défaut
    En effet weed je me trouve actuellment confronté à un prob d'instentiation de mes objets,ces derniers je doit les gérer par type pour avoir ma collection.

    D'autre part test1 est une classe du meme packge contenant des mtehodes que j'utilise sans probleme.test1 je croit marche tres bien c pour ça que j'ai pas mit le code de la classe test1 ,c'est juste une classe intremedière pour récupérer mes données via hibernate.

    Rq : L'objet que je cherche à charger c'est une ligne de mon tab final que j'afficherais sur ma jsp ,et donc c une liste de 13 elements: les 12 mois plus le champ type.

    Je dirais que le champ type doit etre deja predifinit car j'ai 4 types de budgets qui sont fixés au depart. Et le plus important c que ma liste compsée de 13 elements varie selon le type à fin d'aboutir à ma collection d'bjet qui sera le tab final.

  20. #20
    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 un bon fonctionnement des tags nested, il vaut mieux coder dans la classe Finance les getters et setters tout simplement comme ceci :
    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
    public class Finance implements Serializable
    {
    	private String type;
    	private Integer jav,fev,mars,avril, mai;
    	private Integer juin,juil,aout,oct,sep,no,dec;
     
    	public Finance() {//constructeur
    	}
     
    	public Integer getJav() {
     
    		return this.getJav() ;
    	}
                 public void setJav(Integer jav) {
    		this.setJav=jav;
    	}
    // idem pour les autres mois
    ...
    }
    Ensuite, dans l'Action, tu pourrais par exemple récupérer la List d'objets Budget_Type pour l'année sélectionnée via une requête Hibernate en s'assurant qu'elle soit bien triée par type et mois, itérer sur cette liste et constituer la List d'objets Finance en gérant la rupture sur le type.

    Quelque chose du style :
    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
    List budgetTypeList = // appel de la requête qui renvoie une List d'objets Budget_Type ;
     
    List financeList = new ArrayList() ;
    String type="" ;
    Finance finance=null ;
     
    for ( int i=0; i< budgetTypeList.size() ; i++)
    {
       Budget_Type budgetType=(Budget_Type) budgetTypeList.get(i) ;
       // si type précédent différent du type courant
       if ( ! type.equals(budgetType.getType() )
       {
         // ajout de l'objet Finance dans la liste si changement de type sauf si premier record de la liste
         if ( i != 0 )
           { financeList.add(finance) ; }
         // creation de l'objet Finance si premier type de la liste ou changement de type
         finance = new Finance() ;
         finance.setType=budgetType.getType() ;
         if ( budgetType.getMois="jav" }
            { finance.setJav(budgetType.getBudget()) } ;
       }
       else
       {
          if ( budgetType.getMois="fev" }
             { finance.setFev(budgetType.getBudget()) } ;
          if ( budgetType.getMois="mars" }
             { finance.setMars(budgetType.getBudget()) } ;
         ...
       }
       // sauvegarde du type pour permettre la comparaison entre le type précédent et le type courant
       type=budgetType.getType() ;
       // ajout de l'objet Finance dans la liste si dernier record de la liste
       if ( i == budgetTypeList.size() - 1 )
           { financeList.add(finance) ;}
    }
    TonActionForm tonActionForm = (TonActionForm) form ;
    tonActionForm.setFinanceList(financeList) ;
    J'ai codé ça vite fait. Ce n'est donc pas optimisé. Mais bon, tu peux t'en inspirer.
    Il faut juste s'assurer que la gestion de la rupture sur le type est bonne avec prise en compte des cas particuliers comme le premier et dernier record de la liste.

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

Discussions similaires

  1. Je n'arrive pas a modifier les valeurs de mon tableau via mon UserForm
    Par Patouillou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/02/2015, 16h15
  2. Modifier et sauvegarder une valeur dans un tableau
    Par pixi777 dans le forum jQuery
    Réponses: 8
    Dernier message: 06/08/2013, 09h50
  3. foreach ne modifie pas les valeurs d'un tableau
    Par tintin72 dans le forum Langage
    Réponses: 11
    Dernier message: 07/05/2012, 09h15
  4. Réponses: 1
    Dernier message: 23/12/2010, 10h01
  5. [PHP 5.2] modifier les valeurs d'un tableau par un formulaire
    Par dr_feelgood dans le forum Langage
    Réponses: 2
    Dernier message: 01/08/2009, 12h00

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