-
1. Re: <rich:column's attribute comparator not working
lilyju Sep 6, 2012 10:29 AM (in response to lilyju)I solved myself, here is my code:
In my xhtml:
//always load the list
<head>#{manageOutstandingApprovals.loadOutstandingApprovals}</head>
<rich:column styleClass="#{approvals.rowcolor}" width="5%" comparator="#{manageOutstandingApprovals.comparator}" sortBy="#{approvals.dateOutstanding}" sortOrder="#{manageOutstandingApprovals.numOutstandingSort}">
<f:facet name="header">
<h:outputText styleClass="wrapcn" value="#{messages['outstandingApprovals.daysOutstanding']}"/>
</f:facet>
<h:outputText value="#{approvals.dateOutstanding}" id="col9"/>
</rich:column>
in my bean:
public String getLoadOutstandingApprovals() {
if (listOfApprovals != null && organizationID == selectedOrgID)
return "";
List<OutstandingApprovalsSearchResults> searchResults = new ArrayList<OutstandingApprovalsSearchResults>();
listOfApprovals = new ArrayList<ApprovalsTableBean>();
......
}
public Comparator<ApprovalsTableBean> getComparator() {
Collections.sort(listOfApprovals, new MyComparable());
return null;
}
class MyComparable implements Comparator<ApprovalsTableBean>{
@Override
public int compare(ApprovalsTableBean a1, ApprovalsTableBean a2) {
int tz1Int = Integer.valueOf(a1.getDateOutstanding().split(DAY_HOUR_SEPARATOR)[0]);
int tz2Int = Integer.valueOf(a2.getDateOutstanding().split(DAY_HOUR_SEPARATOR)[0]);
if (NumOutstandingSort.equals(Ordering.ASCENDING)) {
if (tz1Int == tz2Int) {
return 0;
}
if (tz1Int > tz2Int) {
return -1;
} else {
return 1;
}
}
else {
if (tz1Int == tz2Int) {
return 0;
}
if (tz2Int > tz1Int) {
return -1;
} else {
return 1;
}
}
}
}
// I use Collections.sort to sort my listOf Approvals