There are two problems. One, the javascript is recording duplicate row selections and two the server isn't validating the datatable response.
my workaround is to change the setter to this:
Code: Select all
public void setSelectedMembers(Member[] selectedMembers) {
LinkedHashSet<Member> tempSet = new LinkedHashSet<Member>();
for (Member member : selectedMembers) {
tempSet.add(member);
}
this.selectedMembers = tempSet.toArray(new Member[tempSet.size()]);
}
Code: Select all
<p:dataTable
id="memberList" value="#{userManagedBean.currentUserAndFamily}"
selection="#{claimHistoryManagedBean.selectedMembers}"
selectionMode="multiple" var="member" ajax="true">
<p:column>
<h:outputText value="${member.firstName} ${member.lastName}" />
</p:column>
</p:dataTable>
<p:commandButton action="#{claimHistoryManagedBean.searchClaims}"
value="Search" ajax="false" update="memberList,claimsHistoryList" />