Bonjour,

dans ma form j'ai initialisé le datagrid pour résoudre un probleme d'identifier Region is altered : dans reset()
if(datagrid==null){
org.hibernate.Session hbsession = HibernateUtil.getSessionFactory().getCurrentSession();
Criteria cl = hbsession.createCriteria(Region.class);
Datagrid dg = Datagrid.getInstance();
dg.setDataClass(Region.class);
//regionsList ok pour la recherche
dg.setData(regionsList);
// dg.setData(cl.list());
setDatagrid(dg);
}

lorsque je clique sur le bouton valider de ma jsp, sans avoir ajouté des enregistrements

dans mon Action display():
org.hibernate.Session hbsession = HibernateUtil.getSessionFactory().getCurrentSession();
Criteria cl = hbsession.createCriteria(Region.class);
RegionsForm regionsform = (RegionsForm)in_form;
cl.setFirstResult(firstRecordIndex);
cl.setMaxResults("10");

List aList = regionsform.getRegionsList();

// Create a datagrid.
Datagrid dg = Datagrid.getInstance();
// Set the bean class for new objects.
//We suppose SomeBean is the class of the object in the List aList.
dg.setDataClass(Region.class);
// Set the data
//dg.setData(cl.list());
dg.setData(aList);
// Initialize the form
regionsform.setDatagrid(dg);
methode validateSelected()
Region regiono = null;

// Region regiono = new Region();
// regiono.setEtablissements(new ArrayList<Etablissement>());

// Get the datagrid object.
Datagrid lc_datagrid = regionsform.getDatagrid();

// Get the modified objects.
Collection lc_modifiedObjects = lc_datagrid.getModifiedData();
log.debug("lc_modifiedObjects " + lc_modifiedObjects.size());
if (lc_modifiedObjects.size() > 0) {

Iterator lc_it = lc_modifiedObjects.iterator();
while (lc_it.hasNext()) {
regiono = (Region) lc_it.next();
log.debug(regiono.getCode());
log.debug(regiono.getLibelle());
log.debug("------------------------------");
hbsession.save(regiono);
hbsession.flush();
// hbsession.close();
}
}

// Get the added objects.
Collection lc_addedObjects = lc_datagrid.getAddedData();

// dgf.setDatagrid(lc_datagrid.getInstance());

log.debug("lc_addedObjects :" + lc_addedObjects.size());
if (lc_addedObjects.size() > 0) {
// System.out.println("Hello");
Iterator lc_it = lc_addedObjects.iterator();
while (lc_it.hasNext()) {
regiono = (Region) lc_it.next();
log.debug(regiono.getCode());
log.debug(regiono.getLibelle());
log.debug("------------------------------");
hbsession.save(regiono);
hbsession.flush();
hbsession.close();
}

}
// Get the selected objects.
Collection lc_selectedObjects = lc_datagrid.getSelectedData();

log.debug("selection :" + lc_selectedObjects.size());

Collection lc_removedObjects = lc_datagrid.getDeletedData();
log.debug("lc_removedObjects " + lc_removedObjects.size());
résultat lc_addedObjects :27
il m'ajoute tous les enregistrement automatiquement alors que je n'ai rien ajouté. Comme si mon datagrid était vide.
Comment résoudre le probleme ?