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,显示结果如下:
