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

  1. #1
    Membre éclairé 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
    Points : 742
    Points
    742
    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 actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    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 éclairé 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
    Points : 742
    Points
    742
    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 é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
    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 éclairé 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
    Points : 742
    Points
    742
    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 actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    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 ?

    @+

  7. #7
    Membre éclairé 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
    Points : 742
    Points
    742
    Par défaut
    Le bean de formaulaire :
    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
    package ddd.pharaon.service.parc.actionform;
     
     
    import org.apache.struts.action.ActionForm;
    import fr.improve.struts.taglib.layout.datagrid.Datagrid;
     
    public class DataGridForm extends ActionForm {
    	private static final long serialVersionUID = 1L;
    	private Datagrid datagrid;
     
    	public void setDatagrid(Datagrid in_datagrid) {
    		datagrid = in_datagrid;
    	}
    	public Datagrid getDatagrid() {
    		return datagrid;
    	}
     
    }
    Le form de mon JSP
    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
    <layout:form action="/InputSubmit" reqCode="display" styleClass="PANEL" scope = "session">
     
    	<layout:row>
    	<layout:pager maxPageItems="10">
    		<layout:datagrid property="datagrid" selectionAllowed="true" multipleSelectionAllowed="false" model="datagrid">
         		<layout:datagridColumn title="Id Véhicule" property="idVehicule"/>
    			<layout:datagridColumn title="N° Véhicule" property="numVehicule"/>
    			<layout:datagridColumn title="Immatriculation" property="immatriculation"/>			
    		</layout:datagrid>		
    	</layout:pager>
    	</layout:row>
     
    	    <layout:row>
    	        <layout:button onclick="StrutsLayout.addDatagridLine('datagrid')">Ajouter</layout:button>
    	        <layout:button onclick="StrutsLayout.setDatagridLineState('datagrid', 'removed')">Supprimer</layout:button>
    	        <layout:submit reqCode="create" >Valider</layout:submit>	
            </layout:row>
     
    	</layout:form>
    L'Action :
    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
    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 modified objects.
    			//-Collection lc_modifiedObjects = lc_datagrid.getModifiedData();
     
    			// Get the removed objects.
    			//-Collection lc_removedObjects = lc_datagrid.getDeletedData();
     
    			// Get the added objects.
     
    			Collection lc_addedObjects = lc_datagrid.getAddedData();
    			System.out.println(lc_addedObjects.size());
    			if (lc_addedObjects.size() > 0)
    			  {
    				//System.out.println("Hello");
    				Iterator<Vehicule> lc_it = lc_addedObjects.iterator();
    				while (lc_it.hasNext()) 
    				   {
    					vehicule.createVehicule((Vehicule)lc_it.next()); 
    				   }			    
    			  }
    			// Get the selected objects.
    			//-Collection lc_selectedObjects = lc_datagrid.getSelectedData();
     
    			// Do something.
     
     
    			//request.getSession().setAttribute("dao", unVehicule);
    			return actionMapping.findForward("list");
    		}

  8. #8
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut
    Bonjour,

    alors je me suis permis de prendre ton code source pour le tester, et chez moi, il me trouve bien les lignes ajoutées au datagrid.

    Je mets le code source de que j'ai fait :
    struts-config.xml :
    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
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE struts-config PUBLIC
    	"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
    	"http://jakarta.apache.org/struts/dtds/struts-config_1_3.dtd">
    <struts-config>
     
    	<!-- ========== Form Bean Definitions ================================== -->
        <form-beans type="org.apache.struts.action.ActionFormBean">
     
            <!-- Logon form bean -->
    		<form-bean name="dataGridForm" type="drdict.struts.bean.DataGridForm" />
    	</form-beans>
     
    	 <!-- ========== Global Exception Definitions ============================== -->
        <global-exceptions />
     
        <!-- ========== Global Forward Definitions =============================== -->
        <global-forwards type="org.apache.struts.action.ActionForward" />
     
    	<action-mappings>
     
    		<!-- Action struts-layout -->
    		<action path="/sort"
    			type="fr.improve.struts.taglib.layout.sort.SortAction"
    			scope="session"
    			validate="false">
    		</action>
     
    		<action path="/treeview"
    			type="fr.improve.struts.taglib.layout.treeview.TreeviewAction"
    			scope="session"
    			validate="false">
    		</action>
     
    		<action
                path="/page"
                type="fr.improve.struts.taglib.layout.sort.PageAction"
                scope="session"
                validate="false" />
     
    		<!-- Actions propre du projet -->
     
    		<!-- DEBUT test -->
    		<action
                path="/datagrid"
                type="drdict.struts.action.DataGridAction"
                name="dataGridForm"
    			parameter="reqCode"
                scope="session"
                validate="false"
                attribute="dataGridForm">
    			<forward name="list" path="/vues/datagrid.jsp" />
            </action>
    	</action-mappings>
     
    	<!-- ========== Controller Configuration ================================ -->
        <controller processorClass="fr.improve.struts.taglib.layout.workflow.LayoutRequestProcessor"/>
     
    	<message-resources parameter="drdict"/>
     
    	 <!-- ========== Plug Ins Configuration ================================= -->
    	<plug-in className="org.apache.struts.tiles.TilesPlugin" >
            <set-property property="definitions-config"
                          value="/WEB-INF/tiles-config.xml" />
            <set-property property="definitions-debug" value="0" />
            <set-property property="definitions-parser-details" value="0" />
            <set-property property="definitions-parser-validate" value="false" />
            <set-property property="moduleAware" value="true"/>
        </plug-in>
     
    </struts-config>
    J'utilise aussi tiles pour la mise en forme de mes pages, mais dans notre cas, cela n'intervient pas.

    Le fichier datagrid.jsp :
    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
     
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1"
        pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <layout:form action="/datagrid" reqCode="display" styleClass="PANEL" scope = "session">
     
    	<layout:row>
    	<layout:pager maxPageItems="10">
    		<layout:datagrid property="datagrid" selectionAllowed="true" multipleSelectionAllowed="false" model="datagrid">
         		<layout:datagridColumn title="Id Véhicule" property="idVehicule"/>
    			<layout:datagridColumn title="N° Véhicule" property="numVehicule"/>
    			<layout:datagridColumn title="Immatriculation" property="immatriculation"/>			
    		</layout:datagrid>		
    	</layout:pager>
    	</layout:row>
     
    	    <layout:row>
    	        <layout:button onclick="StrutsLayout.addDatagridLine('datagrid')">Ajouter</layout:button>
    	        <layout:button onclick="StrutsLayout.setDatagridLineState('datagrid', 'removed')">Supprimer</layout:button>
    	        <layout:submit reqCode="create" >Valider</layout:submit>	
            </layout:row>
     
    	</layout:form>
    </body>
    </html>
    Le fichier DataGridForm.java :
    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
     
    package drdict.struts.bean;
     
    import org.apache.struts.action.ActionForm;
    import fr.improve.struts.taglib.layout.datagrid.Datagrid;
     
    public class DataGridForm extends ActionForm {
    	private static final long serialVersionUID = 1L;
    	private Datagrid datagrid;
     
    	public void setDatagrid(Datagrid in_datagrid) {
    		datagrid = in_datagrid;
    	}
    	public Datagrid getDatagrid() {
    		return datagrid;
    	}
     
    }
    le fichier DataGridAction.java :
    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
    103
    104
    105
    106
     
    package drdict.struts.action;
     
    import java.util.*;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.*;
    import org.apache.struts.actions.*;
    import drdict.struts.bean.*;
    import drdict.util.*;
    import fr.improve.struts.taglib.layout.datagrid.Datagrid;
     
    public class DataGridAction extends DispatchAction {
     
    	public DataGridAction()
    	{
    		super();
    	}
     
    	public ActionForward unspecified(ActionMapping mapping, ActionForm form, 
    			 HttpServletRequest request, HttpServletResponse response) 
    	throws ServletException
    	{  
    		return mapping.findForward("list");
    	}
     
    	public ActionForward create(
    			ActionMapping actionMapping,
    			ActionForm actionForm,
    			HttpServletRequest request,
    			HttpServletResponse response)
     
    			throws Exception {
     
                //		 Cast the form.
    		     VehiculeDAO vehicule = null;
    			 DataGridForm lc_form = (DataGridForm) actionForm;
     
    			// Get the datagrid object.
    			 Datagrid lc_datagrid = lc_form.getDatagrid();
     
    			// Get the modified objects.
    			//-Collection lc_modifiedObjects = lc_datagrid.getModifiedData();
     
    			// Get the removed objects.
    			//-Collection lc_removedObjects = lc_datagrid.getDeletedData();
     
    			// Get the added objects.
     
    			Collection lc_addedObjects = lc_datagrid.getAddedData();
    			System.out.println(lc_addedObjects.size());
    			if (lc_addedObjects.size() > 0)
    			  {
    				//System.out.println("Hello");
    				Iterator lc_it = lc_addedObjects.iterator();
    				while (lc_it.hasNext()) 
    				{
    					vehicule = (VehiculeDAO)lc_it.next();
    					System.out.println(vehicule.getIdVehicule());
    					System.out.println(vehicule.getImmatriculation());
    					System.out.println(vehicule.getNumVehicule());
    					System.out.println("------------------------------");
    				}			    
    			  }
    			// Get the selected objects.
    			//-Collection lc_selectedObjects = lc_datagrid.getSelectedData();
     
    			// Do something.
     
     
    			//request.getSession().setAttribute("dao", unVehicule);
    			return actionMapping.findForward("list");
    		}
     
    	public ActionForward init(
    			ActionMapping actionMapping,
    			ActionForm actionForm,
    			HttpServletRequest request,
    			HttpServletResponse response)
     
    			throws Exception {
     
    			// init des variables
    			List<VehiculeDAO> list = new ArrayList<VehiculeDAO>();
    			DataGridForm dgf = (DataGridForm)actionForm;
     
    			// crée ma liste pour le datagrid
    			for(int i = 0; i < 10; i++)
    			{
    				String immat = Integer.toString(i) + "AA" + Integer.toString(i);
    				VehiculeDAO vehicule = new VehiculeDAO(i, Integer.toString(i), immat);
    				list.add(vehicule);
    				vehicule = null;
    			}
     
    			Datagrid dg = Datagrid.getInstance();
    			dg.setDataClass(VehiculeDAO.class);
    			dg.setData(list);
    			dgf.setDatagrid(dg);
     
    			//request.getSession().setAttribute("dao", unVehicule);
    			return actionMapping.findForward("list");
    		}
    }
    Afin de simuler le même fonctionnement que toi, je me suis créé une classe VehiculeDAO qui n'a certainement rien avoir avec la tienne :

    Fichier VehiculeDAO.java :
    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
     
    package drdict.util;
     
    import java.io.Serializable;
     
    public class VehiculeDAO implements Serializable {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 5641413593586607663L;
    	private int idVehicule;
    	private String numVehicule;
    	private String immatriculation;
     
    	public VehiculeDAO()
    	{
    		idVehicule = 0;
    		numVehicule = "0123456789";
    		immatriculation = "0000 AA 00";
    	}
     
    	public VehiculeDAO(int id, String num, String immat)
    	{
    		idVehicule = id;
    		numVehicule = num;
    		immatriculation = immat;
    	}
     
    	public int getIdVehicule() {
    		return idVehicule;
    	}
    	public void setIdVehicule(int idVehicule) {
    		this.idVehicule = idVehicule;
    	}
    	public String getNumVehicule() {
    		return numVehicule;
    	}
    	public void setNumVehicule(String numVehicule) {
    		this.numVehicule = numVehicule;
    	}
    	public String getImmatriculation() {
    		return immatriculation;
    	}
    	public void setImmatriculation(String immatriculation) {
    		this.immatriculation = immatriculation;
    	}
     
    }
    Donc, quand je compile tout cela et que j'exécute l'url suivante :
    datagrid.do?reqCode=init
    Il m'affiche la page avec le datagrid.

    Je rajoute des lignes et je valide. Et en debug, je passe bien dans ma boucle pour ajouter des voitures à la classe.

    J'espère que cela pourra t'aider

  9. #9
    Membre éclairé 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
    Points : 742
    Points
    742
    Par défaut
    On a presque la même chose.
    Je ne sais pas si mon problème est lié au fait que dans ma base la colone idVehicule soit automatique.

  10. #10
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut
    Citation Envoyé par Le Pharaon Voir le message
    On a presque la même chose.
    Je ne sais pas si mon problème est lié au fait que dans ma base la colone idVehicule soit automatique.
    Quand tu dis automatique, cela veut dire que ton id est généré en automatique au moment de la sauvegarde en base ?
    Mais quand tu affiches les données stockés, l'id est bien présent ? (je suis sur que oui )

    De toute façon, je pense que si l'id n'est pas renseigné pour le champ que tu rajoutes dans ton datagrid, il prend une valeur par défaut.
    Ce que tu peux faire aussi, c'est de ne pas afficher le champ de l'id si c'est cela qui pose pb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <layout:datagrid property="datagrid" selectionAllowed="true" multipleSelectionAllowed="false" model="datagrid">
    			<layout:datagridColumn title="N° Véhicule" property="numVehicule"/>
    			<layout:datagridColumn title="Immatriculation" property="immatriculation"/>			
    		</layout:datagrid>
    Tu as essayé avec le bout de code que j'ai posté pour voir s'il fonctionne chez toi avant de poussez plus loin ?

    @+

  11. #11
    Membre éclairé 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
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par CaptainCyd
    Tu as essayé avec le bout de code que j'ai posté pour voir s'il fonctionne chez toi avant de poussez plus loin ?
    Je disais que nos bouts de codes sont presques identiques. J'ai bien ma liste de véhicules qui s'affiche et quand j'ajoute de nouveaux enregistrements ça apparait sur la grille. Le problème est que lc_addedObjects.size() renvoie toujours zéro. Et pourtant lc_selectedObjects.size() renvoie bien le nombre de lignes sélectionnées.

  12. #12
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut
    Tu as essayé avec le bout de code que j'ai posté pour voir s'il fonctionne chez toi avant de poussez plus loin ?
    Quand j'ai dit cela, c'est pour faire un test sans ta classe en rapport avec hibernate, pour voir s'il y a le même comportement ou pas.
    Désolé si je me suis mal exprimé

    Citation Envoyé par Le Pharaon Voir le message
    Je disais que nos bouts de codes sont presques identiques. J'ai bien ma liste de véhicules qui s'affiche et quand j'ajoute de nouveaux enregistrements ça apparait sur la grille. Le problème est que lc_addedObjects.size() renvoie toujours zéro. Et pourtant lc_selectedObjects.size() renvoie bien le nombre de lignes sélectionnées.
    je ne comprends pas

    Le lc_selectedObjects initialisé avec lc_datagrid.getSelectedData() renvoie > 0
    alors que le lc_addedObjects initialisé par lc_datagrid.getAddedData() renvoie tjs 0
    Cela veux dire qu'il détecte bien tes éléments sélectionnés mais pas tes éléments ajoutés.
    Si c'est cela, c'est vraiment bizarre

    J'ai vérifié les collections (avec mon bout de code ), et les 2 possèdent des objets en ayant ajoutés et sélectionnés

    Donc, là je ne sais pas trop

  13. #13
    Membre éclairé 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
    Points : 742
    Points
    742
    Par défaut
    Citation Envoyé par CaptainCyd
    Cela veux dire qu'il détecte bien tes éléments sélectionnés mais pas tes éléments ajoutés.
    C'est ça le problème. Je vais voir si c'est lié à ma configuration.

    Merci pour le temps que tu m'as consacré.

  14. #14
    Membre actif Avatar de CaptainCyd
    Inscrit en
    Avril 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Avril 2007
    Messages : 201
    Points : 232
    Points
    232
    Par défaut
    pas de pb

    Si tu trouves pourquoi cela ne marche pas, je suis curieux de connaitre la soluce

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