diff --git a/spring-faces/src/main/java/org/springframework/faces/model/ManySelectionTrackingListDataModel.java b/spring-faces/src/main/java/org/springframework/faces/model/ManySelectionTrackingListDataModel.java index aeed1946..c6e9b3d3 100644 --- a/spring-faces/src/main/java/org/springframework/faces/model/ManySelectionTrackingListDataModel.java +++ b/spring-faces/src/main/java/org/springframework/faces/model/ManySelectionTrackingListDataModel.java @@ -59,7 +59,7 @@ public class ManySelectionTrackingListDataModel extends SerializableListDataMode } if (rowSelected && !selections.contains(getRowData())) { selections.add(getRowData()); - } else { + } else if (!rowSelected) { selections.remove(getRowData()); } } diff --git a/spring-faces/src/main/java/org/springframework/faces/model/OneSelectionTrackingListDataModel.java b/spring-faces/src/main/java/org/springframework/faces/model/OneSelectionTrackingListDataModel.java index dbb496ec..ea53a843 100644 --- a/spring-faces/src/main/java/org/springframework/faces/model/OneSelectionTrackingListDataModel.java +++ b/spring-faces/src/main/java/org/springframework/faces/model/OneSelectionTrackingListDataModel.java @@ -69,7 +69,7 @@ public class OneSelectionTrackingListDataModel extends SerializableListDataModel } if (!rowSelected) { - selections.clear(); + selections.remove(getRowData()); } else if (rowSelected && !selections.contains(getRowData())) { selections.clear(); selections.add(getRowData());