Bonjour,

J'ai un tableau (webuijsf table) qui est bindé avec une liste d'objet "Book" (ArrayList).

J'ai une fonction qui me permet d'ajouter des objets dans cette liste ce qui met à jour mon tableau. Jusque là tout est normal.

Cependant, lorsque je veux réaliser l'opération inverse, (list.remove au lieu de list.add) mon tableau de se met pas à jour comme si rien ne s'était supprimé de ma liste. Par contre, lorsque je vide complètement mas liste ça fonctionne...

Fonction d'ajout (qui fonctionne) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
protected void AjoutPanier(Integer id) {
 
        Book currentBook = findBookById(id);
 
        panier.add(currentBook);
 
}
Fonction de suppression qui môôôrche pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
protected void DelPanier(Integer id) {
 
        Book currentBook = findBookById(id);
 
        panier.remove(currentBook);
 
 
}
Du coup, j'ai réussi à contourner un peu près la chose en itérant sur ma liste pour en créer une nouvelle que j'affecte finalement à l'autre (assez tordu j'avoue) :

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
 
// Méthode tordue...
 
List<Book> tmpBookList = new ArrayList<Book>();
 
        Iterator<Book> it = panier.iterator();
 
        while(it.hasNext()) {
            Book bkk = it.next();
 
            if (!bkk.getIdBook().equals(id)) {
                tmpBookList.add(it.next());
            }
        }
 
        panier.clear();
 
        panier = new ArrayList<Book>(tmpBookList);
Alors si quelqu'un peut m'expliquer pourquoi ça ne fonctionne pas, je suis vraiment preneur parce que là je ne vois vraiment pas ce que je fais de mal...