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-Layout] Datagrid : Erreur Unchecked Conversion


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut [Struts-Layout] Datagrid : Erreur Unchecked Conversion
    Salut
    Je travaille avec le datagrid de struts qui me renvoie une collection de données. Mon problème est de savoir comment caster les données envoyées par le formulaire (lc_addedObjects) en collections de vehicules.

    Merci Voici la fonction qui me permet de gérer l'ajout :

    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
    public ActionForward create(
    			ActionMapping actionMapping,
    			ActionForm actionForm,
    			HttpServletRequest request,
    			HttpServletResponse response)
    
    			throws Exception {
    
    			
    //		 Cast the form.
    		    VehiculeDAO vehicule = new HibernateDAOFactory().getVehiculeDAO();
    			DataGridForm lc_form = (DataGridForm) actionForm;
    			
    			// Get the datagrid object.
    			Datagrid lc_datagrid = lc_form.getDatagrid();
    						
    			// Get the added objects.
    			Collection lc_addedObjects = lc_datagrid.getAddedData();
    			vehicule.createVehicules(lc_addedObjects);
    
    						
    			return actionMapping.findForward("list");
    		}
    Merci

  2. #2
    Membre expérimenté Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Par défaut


    je ne comprend pas trop ta question

    Quand tu utilises un datagrid avec struts layout, et que tu initialises, tu défini le type d'objet que la datagrid va afficher

    Donc si tu l'initialise avec le type VehiculeDAO, la collection lié avec la datagrid te renvoie des objets du type VehiculeDAO :
    exemple d'init :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Datagrid dg = Datagrid.getInstance();
    dg.setDataClass(VehiculeDAO.class);
    dg.setData(macollection);
    ensuite qd tu veux récupérer les données uniquement modifiées :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Collection lc = null;
    lc = dg.getModifiedData();
    if(lc.size() > 0)
    {
       Iterator<VehiculeDAO> lc_it = lc.iterator();
       while (lc_it.hasNext()) 
       {
           VehiculeDAO vehic = it.next()
       }
    }

    Mais bon, je ne suis pas sur de répondre à ta question

    en lien, le tuto de chez struts layout pour les datagrid :
    le tuto de struts-layout pour les datagrid

  3. #3
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Merci CaptainCyd c'est bien ce que je cherchais. J'ai pu adapter ton code à ma manière.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Collection lc_addedObjects = lc_datagrid.getAddedData();
    			if (lc_addedObjects.size() > 0)
    			  {
    				System.out.println("Hello");
    				Iterator<Vehicule> lc_it = lc_addedObjects.iterator();
    				while (lc_it.hasNext()) 
    				   {
    					vehicule.createVehicule(lc_it.next()); 
    				   }			    
    			  }
    Quand j'ajoute une ligne et que je valide ça se repercute sur mon dataGrid mais pas dans la base. Le code qui se trouve après le if ne s'execute pas.

  4. #4
    Expert confirmé

    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
    Par défaut
    Essaie plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	Iterator<Vehicule> lc_it = lc_addedObjects.iterator();
    	while (lc_it.hasNext()) 
    	   {
    		vehicule.createVehicule((Vehicule) lc_it.next()); 
    	   }

  5. #5
    Membre éprouvé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Par défaut
    Merci c_nvy j'ai fait ce que m'a dit mais le problème demeure toujours.
    System.out.println(lc_addedObjects.size()) renvoie 0 ce qui fait que le code qui se trouve dans la boucle ne s'exécute pas.

  6. #6
    Membre expérimenté Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Par défaut
    je vais peut-être dire une bétise, mais tu as bien déclarer dans ton formBean une variable de type fr.improve.struts.taglib.layout.datagrid.Datagrid :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import fr.improve.struts.taglib.layout.datagrid.*;
     
    public class AdministrationBean extends DefaultForm {
       Datagrid dg;
    ......
    }
    dans ta jsp, tu as bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <layout:datagrid property="dg" styleClass="DATAGRID" model="datagrid">
    <layout:datagridColumn title="titre" property="nom" width="500"/>
    </layout:datagrid>
    et qd tu récupère ton datagrid pour avoir les infos, tu fais bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    MonBean monBean = (MonBean)form;
    Datagrid lc_datagrid = monBean.getDg();
    Collection lc_addedObjects = lc_datagrid.getAddedData();
    			if (lc_addedObjects.size() > 0)
    			  {
    				System.out.println("Hello");
    				Iterator<Vehicule> lc_it = lc_addedObjects.iterator();
    				while (lc_it.hasNext()) 
    				   {
    					vehicule.createVehicule(lc_it.next()); 
    				   }			    
    			  }
    et quand tu passes dedans, c'est bien après un submit ?

    @+

Discussions similaires

  1. [Struts-Layout] Datagrid et dispatch action
    Par sousoujda2 dans le forum Struts 1
    Réponses: 5
    Dernier message: 15/04/2008, 12h13
  2. Réponses: 2
    Dernier message: 31/01/2008, 14h45
  3. [Struts-Layout] datagrid + save
    Par benneb dans le forum Struts 1
    Réponses: 28
    Dernier message: 17/01/2008, 14h00
  4. cacher des colonnes du struts layout datagrid
    Par imsory dans le forum Struts 1
    Réponses: 1
    Dernier message: 02/04/2007, 11h28
  5. Réponses: 2
    Dernier message: 25/02/2007, 23h56

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