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 70494509..38557676 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 @@ -54,6 +54,9 @@ public class ManySelectionTrackingListDataModel extends SerializableListDataMode } public void setSelected(boolean rowSelected) { + if (!isRowAvailable()) { + return; + } if (rowSelected && !selections.contains(getRowData())) { selections.add(getRowData()); } else { 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 274c1de8..b22a75ec 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 @@ -64,11 +64,15 @@ public class OneSelectionTrackingListDataModel extends SerializableListDataModel } public void setSelected(boolean rowSelected) { - if (rowSelected && !selections.contains(getRowData())) { + if (!isRowAvailable()) { + return; + } + + if (!rowSelected) { + selections.clear(); + } else if (rowSelected && !selections.contains(getRowData())) { selections.clear(); selections.add(getRowData()); - } else if (!rowSelected) { - selections.clear(); } }