-
1. Richfaces 3. How to custom sort in columns always displaying null values at the end
ilya_shaikovsky Apr 8, 2011 3:59 AM (in response to siva999)use comparator attribute. define your own comparator which will works as you need.
-
2. Richfaces 3. How to custom sort in columns always displaying null values at the end
siva999 Apr 8, 2011 12:20 PM (in response to ilya_shaikovsky)Thanks Ilya. To test I tried to use my own comparator, a simple one to sort the dates in ascending order but it is not working. I am not sure what i am doing wrong here.
<rich:dataTable id="tableId" var="_cmpts" value="#{cmptBean.cmptList}">
<rich:column id="cpmtName" sortBy="#{_cmpts.name}" sortable="true">
<f:facet name="header"> <h:outputText value="Name"/> </f:facet>
<h:outputText value="#{_cmpts.name}" />
</rich:column>
<rich:column id="startDate" sortBy="#{_cmpts.startDate}" sortable="true" sortOrder="#{sortBean.startDateOrder}"
comparator="#{sortBean.startDateComparator}">
<f:facet name="header"> <h:outputText value="Start Date"/> </f:facet>
<h:outputText value="#{cmpts.startDate}" />
</rich:column></rich:dataTable>
public class SortBean implements Serializable {
private static final long serialVersionUID = 1L;
public SortBean() {
}
private Ordering startDateOrder = Ordering.ASCENDING;
public Ordering getStartDateOrder() {
return startDateOrder;
}
public void setStartDateOrder(Ordering startDateOrder) {
this.startDateOrder = startDateOrder;
}
public Comparator<Cmpt> getStartDateComparator(){
return new Comparator<Cmpt>() {
public int compare(Cmpt c1, Cmpt c2) {return c1.getStartDate().compareTo(c2.getStartDate());
}
};
}
}When i debug i can observe that getStartDateComparator() is being called.
-
3. Re: Richfaces 3. How to custom sort in columns always displaying null values at the end
lilyju Aug 31, 2012 10:52 AM (in response to siva999)Hi Siva,
Did you end up solving your issue? I use <rich:column comparator, but it does not sort when I click the column.
Thanks,
Lily
-
4. Re: Richfaces 3. How to custom sort in columns always displaying null values at the end
brc Apr 16, 2013 4:47 AM (in response to lilyju)Hi all,
I got similar issue where I needed to implement custom coparator class and did everything like Siva, except part:
public Comparator<Cmpt> getStartDateComparator(){
return new Comparator<Cmpt>() {
public int compare(Cmpt c1, Cmpt c2) {
return c1.getStartDate().compareTo(c2.getStartDate());
}
};
}
this inner class was problematic, so I created "normal" comparator class like this:
public class NameColumnComparator implements Comparator<CustomerListItem>{
public int compare(CustomerListItem c1, CustomerListItem c2){
return c1.getCustomerCompleteName().compareToIgnoreCase(c2.getCustomerCompleteName());
}
}
and call my new comparator from frontend exposed class like this:
public someClass implements Serialazible {
private static final long serialVersionUID = -1L;
private NameColumnComparator nameComparator = new NameColumnComparator();
public Comparator<CustomerListItem> getNameComparator(){
return nameComparator;
}
}
I hope this solves a problem...