First we create a JSP file named sorttag.jsp as follows.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Sort Control Tag Struts2 | dineshonjava.com</title> <head> <body> <h1><span style="background-color: #FFFFcc">Sort Tag Example! | dineshonjava.com </span></h1> <b>List without any sorting</b> <ol> <s:iterator value="userList"> <li> <s:property value="userId" /> , <s:property value="userName" /> , <s:property value="age" /> </li> </s:iterator> </ol> <table> <tr> <td bgcolor="#ffffcc"><b>The Values Sorted by Age.</b><br> <s:bean name="com.dineshonjava.struts2.utility.UserAgeComprator" var="userAgeC" /> <s:sort comparator="#userAgeC" source="userList"> <ol> <s:iterator> <li> <s:property value="userId" /> , <s:property value="userName" /> , <s:property value="age" /> </li> </s:iterator> </ol> </s:sort> </td> <td></td> <td bgcolor="pink"><b>The Values Sorted by Name.</b><br> <s:bean name="com.dineshonjava.struts2.utility.UserNameComprator" var="userNameC" /> <s:sort comparator="#userNameC" source="userList"> <ol> <s:iterator> <li> <s:property value="userId" /> , <s:property value="userName" /> , <s:property value="age" /> </li> </s:iterator> </ol> </s:sort> </td> </tr> </table> </body> </html>
The Struts mapping file struts.xml is as follows-
<?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.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <constant name="struts.custom.i18n.resources" value="myapp" /> <package name="default" extends="struts-default" namespace="/"> <action name="sorttag" class="com.dineshonjava.struts2.action.ControlTagAction"> <result name="success">/sorttag.jsp</result> </action> </package> </struts>
Create action class
package com.dineshonjava.struts2.action; import java.util.ArrayList; import java.util.List; import com.dineshonjava.struts2.domain.User; import com.opensymphony.xwork2.ActionSupport; /** * @author Dinesh Rajput * */ public class ControlTagAction extends ActionSupport{ private static final long serialVersionUID = 1L; private List<User> userList = new ArrayList<User>(); public String execute() { User user1 = new User(); user1.setAge(27); user1.setUserId(111); user1.setUserName("Dinesh Rajput"); User user2 = new User(); user2.setAge(25); user2.setUserId(222); user2.setUserName("Anamika Rajput"); User user3 = new User(); user3.setAge(23); user3.setUserId(333); user3.setUserName("Aadesh"); User user4 = new User(); user4.setAge(21); user4.setUserId(444); user4.setUserName("Vinesh Rajput"); userList.add(user1); userList.add(user2); userList.add(user3); userList.add(user4); return SUCCESS; } public List<User> getUserList() { return userList; } public void setUserList(List<User> userList) { this.userList = userList; } }
Comparator:
UserNameComprator.java
Create 2 Comparator classes, to sort the User’s “userName” and “age” property.
package com.dineshonjava.struts2.utility; import java.util.Comparator; import com.dineshonjava.struts2.domain.User; /** * @author Dinesh Rajput * */ public class UserNameComprator implements Comparator<User> { @Override public int compare(User user1, User user2) { return user1.getUserName().compareTo(user2.getUserName()); } }
UserAgeComprator.java
package com.dineshonjava.struts2.utility; import java.util.Comparator; import com.dineshonjava.struts2.domain.User; /** * @author Dinesh Rajput * */ public class UserAgeComprator implements Comparator<User> { @Override public int compare(User user1, User user2) { return user1.getAge()-user2.getAge(); } }
Create web.xml file as below.
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Struts2ControlTags</display-name> <filter> <filter-name>struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
Right click on the project name and click Export > WAR File to create a War file. Then deploy this WAR in the Tomcat’s webapps directory. Finally, start Tomcat server and try to access
URL http://localhost:8080/doj/sorttag.
This will give you following screen:
Download Source Code
Struts2SortTag.zip