<div dir="ltr" style="text-align: justify;">
<div dir="ltr" style="text-align: justify;">
<div dir="ltr" style="text-align: justify;">
<p>In this example we will discuss about the append tag in the strust2. Append tag is actually combine two iterators into a single iterator. he append tag is a generic tag that is used to merge multiple iterators into one iterator.</p>
<p>Append Iterator Tag is used to append iterators to form an appended iterator through which the entries goes from one iterator to another after each respective iterator is exhausted of entries.</p>
<p>In this example you see how to append the following.</p>
<ul style="text-align: left;">
<li>Combine three <b>ArrayList </b>into a single Iterator.</li>
<li>Combine three <b>HashMap </b>into a single Iterator.</li>
<li>Combine <b>ArrayList </b>and <b>HashMap </b>into a single Iterator.</li>
</ul>
<p><b>Create action classes:</b><br />
First of all let us create a simple class called <i><b>ControlTagAction.java</b></i> which looks like:</p>
<div id="ads-id" align="center"></div>
<pre class="highlight">package com.dineshonjava.struts2.action; 
 
import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Map; 
 
import com.opensymphony.xwork2.ActionSupport; 
 
/** 
 * @author Dinesh Rajput 
 * 
 */ 
public class ControlTagAction extends ActionSupport{ 
 
 private static final long serialVersionUID = 1L; 
 
 private List<;String>; myList1 = new ArrayList<;String>;(); 
 private List<;String>; myList2 = new ArrayList<;String>;(); 
 private List<;String>; myList3 = new ArrayList<;String>;(); 
 
 private Map<;String,String>; myMap1 = new HashMap<;String,String>;(); 
 private Map<;String,String>; myMap2 = new HashMap<;String,String>;(); 
 private Map<;String,String>; myMap3 = new HashMap<;String,String>;(); 
 
 
 public String execute() { 
 myList1.add("dinesh in list 1"); 
 myList1.add("anamika in list 1"); 
 
 myList2.add("dinesh in list 2"); 
 myList2.add("anamika in list 2"); 
 
 myList3.add("dinesh in list 3"); 
 myList3.add("anamika in list 3"); 
 
 myMap1.put("map1-key1", "dinesh in map1"); 
 myMap1.put("map1-key2", "anamika in map1"); 
 
 myMap2.put("map2-key1", "dinesh in map2"); 
 myMap2.put("map2-key2", "anamika in map2"); 
 
 myMap3.put("map3-key1", "dinesh in map3"); 
 myMap3.put("map3-key2", "anamika in map3"); 
 
 return SUCCESS; 
 } 
 
 
 public List<;String>; getMyList1() { 
 return myList1; 
 } 
 
 
 public void setMyList1(List<;String>; myList1) { 
 this.myList1 = myList1; 
 } 
 
 
 public List<;String>; getMyList2() { 
 return myList2; 
 } 
 
 
 public void setMyList2(List<;String>; myList2) { 
 this.myList2 = myList2; 
 } 
 
 
 public List<;String>; getMyList3() { 
 return myList3; 
 } 
 
 
 public void setMyList3(List<;String>; myList3) { 
 this.myList3 = myList3; 
 } 
 
 
 public Map<;String, String>; getMyMap1() { 
 return myMap1; 
 } 
 
 
 public void setMyMap1(Map<;String, String>; myMap1) { 
 this.myMap1 = myMap1; 
 } 
 
 
 public Map<;String, String>; getMyMap2() { 
 return myMap2; 
 } 
 
 
 public void setMyMap2(Map<;String, String>; myMap2) { 
 this.myMap2 = myMap2; 
 } 
 
 
 public Map<;String, String>; getMyMap3() { 
 return myMap3; 
 } 
 
 
 public void setMyMap3(Map<;String, String>; myMap3) { 
 this.myMap3 = myMap3; 
 } 
 
} 
 
</pre>
<p><b>Create views</b><br />
Create a file called <i><b>appendtag.jsp</b></i> with the following contents:</p>
<pre class="highlight"><;%@ taglib prefix="s" uri="/struts-tags" %>; 
 <;html>; 
<;head>; 
<;title>;APPEND Control Tag Struts2 | dineshonjava.com<;/title>; 
<;/head>; 
 
<;body>; 
<;h1>;Struts 2 Append tag in struts2 | dineshonjava.com<;/h1>; 
 
Combine 3 ArrayList into a single iterator. 
<;s:append var="mycombinelists">; 
 <;s:param value="%{myList1}" />; 
 <;s:param value="%{myList2}" />; 
 <;s:param value="%{myList3}" />; 
<;/s:append>; 
<;ol>; 
<;s:iterator value="%{#mycombinelists}">; 
 <;li>;<;s:property />;<;/li>; 
<;/s:iterator>; 
<;/ol>; 
 
 Combine 3 HashMap into a single iterator. 
<;s:append var="mycombinemaps">; 
 <;s:param value="%{myMap1}" />; 
 <;s:param value="%{myMap2}" />; 
 <;s:param value="%{myMap3}" />; 
<;/s:append>; 
<;ol>; 
<;s:iterator value="%{#mycombinemaps}">; 
 <;li>;<;s:property />;<;/li>; 
<;/s:iterator>; 
<;/ol>; 
 
Combine ArrayList and HashMap into a single iterator. 
<;s:append var="mycombinelistmap">; 
 <;s:param value="%{myList1}" />; 
 <;s:param value="%{myMap2}" />; 
<;/s:append>; 
<;ol>; 
<;s:iterator value="%{#mycombinelistmap}">; 
 <;li>;<;s:property />;<;/li>; 
<;/s:iterator>; 
<;/ol>; 
 
<;/body>; 
<;/html>; 
</pre>
<p>The append tag takes two or more lists as parameters.</p>
<p><b>Configuration Files</b><br />
Your <i><b>struts.xml</b></i> should look like:</p>
<pre class="highlight"><;?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="appendtag" class="com.dineshonjava.struts2.action.ControlTagAction">; 
 <;result name="success">;/appendtag.jsp<;/result>; 
 <;/action>; 
 
 <;/package>; 
 <;/struts>; 
</pre>
<p><b>Your <i>web.xml </i>should look like:</b></p>
<pre class="highlight"><;?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>; 
</pre>
</div>
<p>Right click on the project name and click <b>Export >; WAR</b> File to create a War file. Then deploy this WAR in the Tomcat&#8217;s webapps directory. Finally, start Tomcat server and try to access</p>
<p><b>URL <i>http://localhost:8080/doj/appendtag</i></b></p>
<p>This will give you following screen:</p>
<div class="separator" style="clear: both; text-align: center;"><img src="https://dineshonjava.com/wp-content/uploads/2013/08/11111111.png" border="0" /></div>
</div>
<p><b>Download Source Code</b><br />
<b><a href="https://sites.google.com/a/dineshonjava.com/dineshonjava/dineshonjava/Struts2AppendTags.zip?attredirects=0&;d=1" target="_blank" rel="noopener">Struts2Append_Tag.zip</a></b></p>
<p> ;</p>
<div style="background-color: pink; border-width: thin; text-align: center;"><b><;<;<a href="https://dineshonjava.com/struts-2-iterator-tag-example/">Previous</a> <;<; || <a href="https://dineshonjava.com/struts-2-baby-step-to-learn/">Index </a>|| >;>;<a href="https://dineshonjava.com/struts-2-merge-tag-example/">Next</a> >;>;</b></div>
</div>
<div class="wp-post-navigation"> 
									 <div class="wp-post-navigation-pre"> 
									 <a href="https://dineshonjava.com/struts-2-iterator-tag-example/">Previous</a> 
									 </div> 
									 <div class="wp-post-navigation-next"> 
									 <a href="https://dineshonjava.com/struts-2-merge-tag-example/">Next</a> 
									 </div> 
									</div>
<script type="text/javascript">
jQuery(document).ready(function($) {
 $.post('https://dineshonjava.com/wp-admin/admin-ajax.php', {action: 'mts_view_count', id: '374'});
});
</script>
Strategy Design Patterns We can easily create a strategy design pattern using lambda. To implement…
Decorator Pattern A decorator pattern allows a user to add new functionality to an existing…
Delegating pattern In software engineering, the delegation pattern is an object-oriented design pattern that allows…
Technology has emerged a lot in the last decade, and now we have artificial intelligence;…
Managing a database is becoming increasingly complex now due to the vast amount of data…
Overview In this article, we will explore Spring Scheduler how we could use it by…