struts2的<s:sort>标签使用 java.util.comparator 来排序列表,这里创建一个web工程:struts2sorttag,来演示在多个复选框如何设置的默认值,整个项目的结构如下图所示:
在本教程中,将创建6个 person对象并添加到一个arraylist,并使用排序标签基于person属性的arraylist进行排序。
person.java
package com.h3.common; public class person{ private string firstname; private string lastname; private int age; public person(string firstname, string lastname, int age) { super(); this.firstname = firstname; this.lastname = lastname; this.age = age; } public string getfirstname() { return firstname; } public void setfirstname(string firstname) { this.firstname = firstname; } public string getlastname() { return lastname; } public void setlastname(string lastname) { this.lastname = lastname; } public int getage() { return age; } public void setage(int age) { this.age = age; } }
firstnamecomparator.java
package com.h3.common; import java.util.comparator; import com.h3.common.person; public class firstnamecomparator implements comparator<person> { public int compare(person p1, person p2) { string firstname1 = p1.getfirstname().touppercase(); string firstname2 = p2.getfirstname().touppercase(); return firstname1.compareto(firstname2); } }
agecomparator.java
package com.h3.common; import java.util.comparator; import com.h3.common.person; public class agecomparator implements comparator<person> { public int compare(person p1, person p2) { return p1.getage() - p2.getage(); } }
package com.h3.common.action; import java.util.arraylist; import java.util.list; import com.h3.common.person; import com.opensymphony.xwork2.actionsupport; public class sorttagaction extends actionsupport{ private list<person> persons = new arraylist<person>(); public string execute() { person p1 = new person("c-first", "c-last", 40); person p2 = new person("a-first", "a-last", 20); person p3 = new person("b-first", "b-last", 10); person p4 = new person("f-first", "f-last", 33); person p5 = new person("e-first", "e-last", 22); person p6 = new person("d-first", "d-last", 11); persons.add(p1); persons.add(p2); persons.add(p3); persons.add(p4); persons.add(p5); persons.add(p6); return success; } public list<person> getpersons() { return persons; } public void setpersons(list<person> persons) { this.persons = persons; } }
sort.jsp
<%@ taglib prefix="s" uri="/struts-tags" %> <html> <head><title>struts2 sort标签示例 - www.h3.com</title> </head> <body> <h1>struts 2 sort标签示例</h1> <s:bean name="com.h3.common.firstnamecomparator" var="firstnamecomparator" /> <s:bean name="com.h3.common.agecomparator" var="agecomparator" /> <table> <tr> <td> 1. display all persons (unsort). <ol> <s:iterator value="persons"> <li><s:property value="firstname" />, <s:property value="lastname" />, <s:property value="age" /> </li> </s:iterator> </ol> </td> <td> 2. display all persons (sort with firstname). <s:sort comparator="#firstnamecomparator" source="persons"> <ol> <s:iterator> <li><s:property value="firstname" />, <s:property value="lastname" />, <s:property value="age" /> </li> </s:iterator> </ol> </s:sort> </td> </tr> <tr> <td colspan="2"> 3. display all persons (sort with age). <s:sort comparator="#agecomparator" source="persons"> <ol> <s:iterator> <li><s:property value="firstname" />, <s:property value="lastname" />, <s:property value="age" /> </li> </s:iterator> </ol> </s:sort> </td> </tr> </table> </body> </html>
<?xml version="1.0" encoding="utf-8" ?> <!doctype struts public "-//apache software foundation//dtd struts configuration 2.0//en" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.devmode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <action name="sorttagaction" class="com.h3.common.action.sorttagaction" > <result name="success">pages/sort.jsp</result> </action> </package> </struts>
http://localhost:8080/strut2sorttag/sorttagaction.action
在浏览器打开上面的url,显示结果如下: