Merge Tag (Control Tags) Example

In this section, we are going to describe the merge tag . The merge tag is a generic tag that is used to merge iterators.

Merge Tag (Control Tags) Example

Merge Tag (Control Tags) Example

     

In this section, we are going to describe the merge tag. The merge tag is a generic tag that is used to merge iterators. The successive call to the merge iterator causes each merge iterator to have a chance to expose its element, subsequently next call allows the next iterator to expose its element. Once the last iterator is done exposing its element, the first iterator is allowed to do so again (unless it is exhausted of entries).

In the current example, 2 lists being merged, each list have 5 entries, the following will be the logic.

  1. Display first element of the first list.
  2. Display first element of the second list.
  3. Display second element of the first list.
  4. Display second element of the second list.
  5. Display third element of the first list.
  6. Display thrid element of the second list.....and so on.

Add the following code snippet into the struts.xml file.

struts.xml

<action name="mergeTag" class="net.roseindia.mergeTag">
  <result>/pages/genericTags/mergeTag.jsp</result>
</action>

Create two lists in the action class  and populate them with various items as shown in the  "mergeTag" class.

mergeTag.java

package net.roseindia;
import com.opensymphony.xwork2.ActionSupport;
import java.util.*;

public class mergeTag extends ActionSupport {
  private List myList;
  private List myList1;

  public String execute() throws Exception{
  myList = new ArrayList();
  myList.add("www.Roseindia.net");
  myList.add("Deepak Kumar");
  myList.add("Sushil Kumar");
  myList.add("Vinod Kumar");
  myList.add("Amit Kumar");

  myList1 = new ArrayList();
  myList1.add("www.javajazzup.com");
  myList1.add("Himanshu Raj");
  myList1.add("Mr. khan");
  myList1.add("John");
  myList1.add("Ravi Ranjan");
  return SUCCESS;
  }

  public List getMyList(){
  return myList;
  }

  public List getMyList1(){
  return myList1;
  }
}

Now create a jsp page using <s:merge> and <s:param value> tags as  shown in the mergeTag.jsp page. The merge  tag  is used to merge iterators. The "id" parameter keeps the resultant iterator stored under in the stack's context and the "value" parameter in the <s:iterator> is used to get the values contained within the respective iterators.

mergeTag.jsp 

<%taglib prefix="s" uri="/struts-tags" %>

<html>
  <head>
  <title>Merge Tag Example!</title>
  </head>
  <body>
  <h1><span style="background-color: #FFFFcc">Merge Tag Example!
</span></h1>

  <s:merge id="mergeId">
  <s:param value="%{myList}" />
  <s:param value="%{myList1}" />
  </s:merge>

  <s:iterator value="%{#mergeId}">
  <s:property /><br>
  </s:iterator>
  </body>
</html>

Output of merge Tag: