- http://java-x.blogspot.com/2006/11/struts-paging-and-sorting-with.html#sampleCode
- http://displaytag.sourceforge.net/11/tut_externalSortAndPage.html
To determine the request parameter name for column sorting you can do:
new ParamEncoder(tableId).encodeParameterName(TableTagParameters.PARAMETER_SORT))
To get the order (ASC/DESC):
new ParamEncoder(tableId).encodeParameterName(TableTagParameters.PARAMETER_ORDER))
Descending is 2, Ascending is 1.
<%@ page import="beans.Employee,data.DAO,java.util.List,org.displaytag.tags.TableTagParameters,org.displaytag.util.ParamEncoder"%>
<logic:notEqual name="empList" value="null">
<jsp:scriptlet>
if (session.getAttribute("empList") != null) {
String sortBy = request.getParameter((new ParamEncoder("empTable")).encodeParameterName(TableTagParameters.PARAMETER_SORT));
DAO.sort((List) session.getAttribute("empList"), sortBy);
}
</jsp:scriptlet>
<display:table name="sessionScope.empList" pagesize="4" id="empTable" sort="external" defaultsort="1" defaultorder="ascending">
<display:column property="empId" title="ID" sortable="true" sortName="empId" headerClass="sortable" />
<display:column property="empName" title="Name" sortName="empName" sortable="true" headerClass="sortable" />
<display:column property="empJob" title="Job" sortable="true" sortName="empJob" headerClass="sortable" />
<display:column property="empSal" title="Salary" sortable="true" headerClass="sortable" sortName="empSal" />
</display:table>
</logic:notEqual>
public class DAO {
public static List getData(long minSal) {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session session = sessionFactory.getCurrentSession();
List result = null;
try {
session.beginTransaction();
result = session.createQuery("from Employee as emp where emp.empSal >=?").setLong(0, minSal).list();
System.out.println("Result size : " + result.size());
session.getTransaction().commit();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static List sort(List<Employee> list, String sortBy) {
Comparator comp = getComparator(sortBy);
Collections.sort(list, comp);
return list;
}
private static Comparator getComparator(String sortBy) {
System.out.println("Sort by : " + sortBy);
if (sortBy ==null) {
return new NameComparator();
}
if (sortBy.equals("empName"))
return new NameComparator();
if (sortBy.equals("empId"))
return new IdComparator();
if (sortBy.equals("empSal"))
return new SalComparator();
if (sortBy.equals("empJob"))
return new JobComparator();
return null;
}
private static class NameComparator implements Comparator {
public int compare(Object emp1, Object emp2) {
Employee employee1 = (Employee) emp1;
Employee employee2 = (Employee) emp2;
return employee1.getEmpName().compareTo(employee2.getEmpName());
}
}
private static class IdComparator implements Comparator {
public int compare(Object emp1, Object emp2) {
Employee employee1 = (Employee) emp1;
Employee employee2 = (Employee) emp2;
return new Long(employee1.getEmpId()).compareTo(new Long(employee2.getEmpId()));
}
}
private static class SalComparator implements Comparator {
public int compare(Object emp1, Object emp2) {
Employee employee1 = (Employee) emp1;
Employee employee2 = (Employee) emp2;
return new Long(employee1.getEmpSal()).compareTo(new Long(employee2.getEmpSal()));
}
}
private static class JobComparator implements Comparator {
public int compare(Object emp1, Object emp2) {
Employee employee1 = (Employee) emp1;
Employee employee2 = (Employee) emp2;
return employee1.getEmpJob().compareTo(employee2.getEmpJob());
}
}
}
No comments:
Post a Comment