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 2 Java Discussion :

Sauvegarde en Struts 2


Sujet :

Struts 2 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut Sauvegarde en Struts 2
    Bonjour,

    Je débute en Struts 2.
    Je voulais savoir comment s'effectue une sauvegarde en Struts 2.
    Merci d'avance !!!

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Bonjour,

    Pourrais-tu êtres un peut plus précis. Tu souhaites sauvegarder un fichier?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Je tiens avant tout à vous remercier pour votre réponse !!!
    Je souhaite sauvegarder une liste de commande qui est une map.
    Je crée pour cela une fonction qui va me sauvegarder mes commandes et je sérialise mes objets.
    Mais cela ne fonctionne pas, il me donne des erreurs:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.opensymphony.xwork2.conversion.impl.XWorkConverter
    Merci !!!

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Bonjour,


    Es-tu sur que tous les objets que tu place dans la sessions implémentes interface Serializable?

    Pourrait-tu nous monter un peux plus de ton code?

    Tu veux garder ta liste de commandes dans un map, et ensuite afficher cela sur une autre page a l'aide de iterator?


    N’hésite pas à mettre le code de ton exemple, pour que l'on puisse le reproduire.

    Sans plus d'information cela devient compliqué de savoir comment t'aider.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    bonjour,

    Pour sauvegarder mes commandes passées je serialize mais deux objets:

    La commande :

    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
     
    package model;
     
    import java.util.ArrayList;
    import java.io.*;
     
    public class Commande implements Serializable{
     
    	private static final long serialVersionUID = -8493897757955097072L;
     
    	public enum Etat{Attente,Preparee,Servie}; //l'etat de la commande
    	Etat e;
    	int numeroCommande; //le numero unique d'une commande
    	ArrayList<String>listesBoissons; //le numero du serveur qui a prit la commande
    	int numeroServeur;
    	int table; //represente la table servie
    	static int LASTID=0;
     
     
    public Commande (ArrayList<String> listesBoissons, int numeroServeur, int table){
    	if(LASTID==0){
    		java.text.SimpleDateFormat f =new java.text.SimpleDateFormat("ddMMyy");
    		java.util.Date date=new java.util.Date();
    		int i=Integer.valueOf(f.format(date));
    		String s=String.valueOf(i);
    		s=i+"0001";
    		LASTID=Integer.parseInt(s);
    	}
    	numeroCommande=LASTID;
    	LASTID++;
    	this.numeroServeur=numeroServeur;
    	this.listesBoissons = listesBoissons;
    	this.numeroServeur = numeroServeur;
    	this.e= Etat.Attente;	
    	this.table=table;
    }
     
    public Commande(){
    	if(LASTID==0){
    		java.text.SimpleDateFormat f =new java.text.SimpleDateFormat("ddMMyy");
    		java.util.Date date=new java.util.Date();
    		int i=Integer.valueOf(f.format(date));
    		String s=String.valueOf(i);
    		s=i+"0001";
    		LASTID=Integer.parseInt(s);
    	}
    	e=Etat.Attente;
    	numeroCommande=LASTID; 
    	LASTID++;
    	listesBoissons=new ArrayList<String>();
    	numeroServeur=-1;
    	this.table=-1;
    }
     
    /* LES GETTERS ET LES SETTERS */
     
    public Etat getE() {
    	return e;
    }
     
     
    public void setE(Etat e) {
    	this.e = e;
    }
     
     
    public ArrayList<String> getListesBoissons() {
    	return listesBoissons;
    }
     
     
    public void setListesBoissons(ArrayList<String> listesBoissons) {
    	this.listesBoissons = listesBoissons;
    }
     
     
    public int getNumeroServeur() {
    	return numeroServeur;
    }
     
     
    public void setNumeroServeur(int numeroServeur) {
    	this.numeroServeur = numeroServeur;
    }
     
    public int getNumeroCommande(){
    	return numeroCommande;
    }
     
    public void setNumeroCommande(int numeroCommande) {
    	this.numeroCommande = numeroCommande;
    }
     
    public void setTable(int table){
    	this.table=table;
    }
     
    public int getTable(){
    	return table;
    }
     
    }
    et le ModelCafe
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    package model;
     
    import java.io.Serializable;
    import java.util.AbstractCollection;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.Map;
     
    public class ModelCafe extends AbstractCollection<Commande> implements Serializable{
     
    	private static final long serialVersionUID = -8493897757955097072L;
     
     
    	ArrayList<String> boissons;
    	Map<Integer,Commande>listCommande;
    	ArrayList<Serveur>listServeur;
    	ArrayList<Integer> table;
    	private static int LAST_ID=0;
     
     
    	public ModelCafe() {
     
    		String tab[] = {"Café", "Chocolat", "Eau plate", "Eau gazeuse", "Thé", "Limonade", "Grenadine",
    				"Jus de fruit", "Coca Cola", "Oasis", "Ice Tea", "Sprite", "Porto", "Vin", "Bière"};
    		boissons = new ArrayList<String>();
    		for (String element : tab)
    			boissons.add(element);
    		listCommande = new HashMap<Integer,Commande>();
    		listServeur = new ArrayList<Serveur>();
    		table=new ArrayList<Integer>();
    		table.add(1); //table 1
    		table.add(2); //table 2
    		table.add(3); //table 3
    		listServeur.add(new Serveur("nom","prenom"));
    		listServeur.add(new Serveur("nom1","prenom1"));	
    	}
     
    	public void ajouterCommande(ArrayList<String>listBoissons, int numeroServeur, int table){		
    		listCommande.put(LAST_ID,new Commande(listBoissons, numeroServeur, table));
    		LAST_ID++;
    	}	
     
    	public ArrayList<String> getBoissons(){
    		return boissons;
    	}
     
    	public Map<Integer,Commande> getListCommande(){
    		return listCommande;
    	}
     
    	public int getSize(){
    		return listCommande.size();
    	}
     
    	public ArrayList<Serveur> getListServeur(){
    		return listServeur;
    	}
     
    	public Commande getCommandeNumero(int numeroCommande){
    		for(int i=0; i<listCommande.size();i++)
    			if(listCommande.get(i).getNumeroCommande()==numeroCommande)
    				return listCommande.get(i);
    		return null;
     
    	}
     
     
    	public ArrayList<Integer> getTable(){
    		return table;
    	}
     
    	public void setTable(ArrayList<Integer> t){
    		table=t;
    	}
     
     
    	@Override
    	public Iterator<Commande> iterator() {
    		return listCommande.values().iterator();
    	}
     
    	@Override
    	public int size() {
    		return listCommande.size();
    	}
     
    }
    Ma fonction de sauvegarde est la suivante :

    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
     
    public void save(Commande c){
    			ArrayList<Object> l= new ArrayList<Object>();
    			try{
    				try{
    					//lire le fichier
    					ObjectInputStream in=new ObjectInputStream(new FileInputStream("fichierCommande"));
    					Object o=in.readObject();
    					while(o!=null){
    						l.add(o); //ajouter l'objet dans la liste
    						o=in.readObject();
    					}
    				}
    				catch(Exception e){
    					System.out.println(e);
    				}
    				//ecrire sur le fichier
    				ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("fichierCommande"));
    				try{
    					for(int i=0; i<l.size();i++) //copie tous les objets lu precedemment
    						out.writeObject(l.get(i));
    					out.writeObject(c); //ecrire la commance c
    					out.flush(); //vider le buffer
    					System.out.println("fin ecrire");
    				}
    				finally{
    					out.close(); //fermer le buffer
    				}
    			}
    			catch(Exception e){
    				System.out.println(e);
    			}
    		}
    Lorsque la commande est passée et que l'on change son état en servie, c'est là que je fais la sauvegarde dans la fonction execute.

    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
     
    	 */
    		public String execute() throws Exception{
    			assert((ModelCafe)getSession().get("cafe")!=null&&getSession().get("cafe").getClass()==ModelCafe.class);
    			ModelCafe c=(ModelCafe)getSession().get("cafe");
    			cmd=c.getCommandeNumero(numeroCommande);
    			if (cmd.getE().equals(Etat.Preparee)){
    				c.getCommandeNumero(numeroCommande).setE(Etat.Servie);
    				save(c.getCommandeNumero(numeroCommande));
    				getSession().put("cafe", c);
    			}
    			return SUCCESS;
    		}
     
    	}
    Merci encore pour votre aide !!!

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Ta session est bien du type HttpSession?

    Tu charge ta liste à partir du fichier au début du démarrage de ton application avec un listener?

    Je te demande tout cela car j'ai besoin de reproduire le fonctionnement de ton application.

    Et ce qui représente l’univers de ton model Café tu le met dans la session au démarrage avec tout l’historial des commandes passées?

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Bonjour,

    Voilà ce que lance l'exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    java.io.WriteAbortedException: writing aborted; java.io.NotSerializableException: com.opensymphony.xwork2.conversion.impl.XWorkConverter
    java.io.NotSerializableException: com.opensymphony.xwork2.conversion.impl.XWorkConverter
    Les objets que je mets en session est le ModelCafe.

    Merci.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Peut-tu me montrer ce que tu as derrière les méthodes getSession et put.

    Tu as bien une interface JSP, j'ai mi ton object ModelCafe dans une HttpSession vu que j'utilise des servelets, et je n'est pas de problèmes...

  9. #9
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Mai 2006
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mai 2006
    Messages : 226
    Par défaut
    Salut,

    est-ce que tu pourrais mettre le code qui plante dans un try/catch... les messages d'erreurs affichés par struts sont parfois "biaisés" et on a du mal à trouver le vrai problème.

  10. #10
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Je suis en Struts 2, je n'utilise pas de HttpSession, ni de servlets !!!

    Merci du temps accordé !!!

  11. #11
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Salut,

    Dans ma fonction save j'ai déjà mis un try catch.
    Cette même fonction lorsque je l'utilise dans ma partie Swing elle fonction.
    Je me pose la question à savoir pourquoi sous Swing, elle marche mais pas sous Struts 2.

    Voilà la fonction save:

    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
     
     
    public void save(Commande c){
    		ArrayList<Object> l= new ArrayList<Object>();
    		try{
    			try{
    				//lire le fichier
    				ObjectInputStream in=new ObjectInputStream(new FileInputStream("fichierCommande"));
    				Object o=in.readObject();
    				while(o!=null){
    					l.add(o); //ajouter l'objet dans la liste
    					o=in.readObject();
    				}
    			}
    			catch(Exception e){
     
    			}
    			//ecrire sur le fichier
    			ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("fichierCommande"));
    			try{
    				for(int i=0; i<l.size();i++) //copie tous les objets lu precedemment
    					out.writeObject(l.get(i));
    				out.writeObject(c); //ecrire la commance c
    				out.flush(); //vider le buffer
    			}
    			finally{
    				out.close(); //fermer le buffer
    			}
    		}
    		catch(Exception e){
    			System.out.println(e);
    		}
     
    	}

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 277
    Par défaut
    Derrière Struts 2 se sont des servelet, dans une action à partir de la request tu peut obtenir la session. J'utilise aussi struts 2 et ça marche, après je te conseille de faire kakashi99 pour voir ou ton code plante.

  13. #13
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 33
    Par défaut
    Je sais pas si c'est ça que vous me demandez mais voilà ce que j'obtiens.

    Lignes ajoutées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    HttpServletRequest request = ServletActionContext.getRequest();
     
    			System.out.println("ma session" +" "+ request.getSession());
    Et voila le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ma session org.apache.catalina.session.StandardSessionFacade@617e53c9

Discussions similaires

  1. [Struts-Layout] sauvegarde d'un form dynamique
    Par benneb dans le forum Struts 1
    Réponses: 2
    Dernier message: 27/01/2008, 18h49
  2. Sauvegardes
    Par tastalian dans le forum DirectX
    Réponses: 12
    Dernier message: 15/10/2002, 01h30
  3. [ADO] Sauvegarde / lecture de recordset
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/09/2002, 16h54
  4. Sauvegarder une surface dans un fichier
    Par Freakazoid dans le forum DirectX
    Réponses: 6
    Dernier message: 18/08/2002, 15h23
  5. [Kylix] Sauvegarde de donnée utilisateur....
    Par Eclypse dans le forum EDI
    Réponses: 1
    Dernier message: 11/05/2002, 17h21

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