How to Iterate ArrayList in Struts2
Join the DZone community and get the full member experience.
Join For FreeWe will discuss how to iterate over a collection of String objects in Struts2 tag libraries and then a List of custom class objects. It looks as if iterating a list of string objects is easier than iterating over a list of custom class objects in Struts 2. But the reality is that iterating a list of custom class objects is also equally easier. By custom class we mean the User, Employee, Department, Products, Vehicles classes that are created in any web application.
Usually it happens that one needs to fetch a list of records from database/files and then display it in the JSP. The module requiring this functionality could be Search, Listing users/departments/products etc.
Also if you are going to use the code examples given below, use the following URL's to access the application:
http://localhost:8080//index.action
web.xml
<?xml version="1.0" encoding="UTF-8"?>struts.xml
<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_2_5.xsd" version="2.5">
<display-name></display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>
</web-app>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="struts-default" >
<action name="index">
<result name="success">/home.jsp</result>
</action>
<action name="fetch" class="com.example.FetchAction">
<result name="success">/success.jsp</result>
<result name="failure">/failure.jsp</result>
</action>
</package>
</struts>
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
Enter a user name to get the documents uploaded by that user.
<s:form name="fetch" theme="simple" action="fetch">
Username <s:textfield name="username" />
<s:submit value="Fetch Records" />
</s:form>
</body>
</html>
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
Documents uploaded by the user are:</br>
<s:iterator value="documents"><s:property value="name" /></br></s:iterator>
</body>
</html>
<%@taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<h3><s:property value="message" /></h3>
</body>
</html>
package com.example;
import java.util.ArrayList;
import java.util.List;
public class FetchAction {
private String username;
private String message;
private List documents = new ArrayList();
public List getDocuments() {
return documents;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String execute() {
if( username != null) {
//logic to fetch the document list (say from database)
Document d1 = new Document();
d1.setName("user.doc");
Document d2 = new Document();
d2.setName("office.doc");
Document d3 = new Document();
d3.setName("transactions.doc");
documents.add(d1);
documents.add(d2);
documents.add(d3);
return "success";
} else {
message="Unable to fetch";
return "failure";
}
}
}
Document.java
package com.example;
public class Document {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Iterate String List in Struts2
The way to iterate the a String list is similar with the only difference that the action class FetchAction.java now populates the name of documents into an ArrayList of String objects.
The code zip file containing the iteration over an ArrayList of custom class object or bean can be downloaded at:
http://www.fileserve.com/file/QmrsJ7k
The URL to access this application will be:
http://localhost:8080/IteratorExample/index.action
The code zip file containing the iteration over an ArrayList of string class object or bean can be downloaded at:
http://www.fileserve.com/file/V2kXkfx
The URL to access this application will be:
http://localhost:8080/StringIteratorExample/index.action
From http://extreme-java.blogspot.com/2011/05/how-to-iterate-arraylist-in-struts2.html
Opinions expressed by DZone contributors are their own.
Comments