<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
  <meta http-equiv="Content-Language" content="en"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

  <title>generator tag</title>

  <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
  <link href="/css/main.css" rel="stylesheet">
  <link href="/css/custom.css" rel="stylesheet">
  <link href="/css/syntax.css" rel="stylesheet">

  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
  <script type="text/javascript" src="/js/community.js"></script>

  <!-- Matomo -->
  <script>
    var _paq = window._paq = window._paq || [];
    /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
    /* We explicitly disable cookie tracking to avoid privacy issues */
    _paq.push(['disableCookies']);
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
      var u="//analytics.apache.org/";
      _paq.push(['setTrackerUrl', u+'matomo.php']);
      _paq.push(['setSiteId', '41']);
      var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
    })();
  </script>
  <!-- End Matomo Code -->
</head>
<body>

<a href="https://github.com/apache/struts" class="github-ribbon">
  <img decoding="async" loading="lazy" style="position: absolute; right: 0; border: 0;" width="149" height="149" src="https://github.blog/wp-content/uploads/2008/12/forkme_right_red_aa0000.png?resize=149%2C149" class="attachment-full size-full" alt="Fork me on GitHub" data-recalc-dims="1">
</a>

<header>
  <nav>
    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
            Menu
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
        </div>
        <div id="struts-menu" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Home<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/index.html">Welcome</a></li>
                <li><a href="/download.cgi">Download</a></li>
                <li><a href="/releases.html">Releases</a></li>
                <li><a href="/announce-2024.html">Announcements</a></li>
                <li><a href="http://www.apache.org/licenses/">License</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Support<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/mail.html">User Mailing List</a></li>
                <li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
                <li><a href="/security.html">Reporting Security Issues</a></li>
                <li><a href="/commercial-support.html">Commercial Support</a></li>
                <li class="divider"></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
                <li class="divider"></li>
                <li><a href="/maven/project-info.html">Maven Project Info</a></li>
                <li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
                <li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Documentation<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/birdseye.html">Birds Eye</a></li>
                <li><a href="/primer.html">Key Technologies</a></li>
                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
                <li class="divider"></li>
                <li><a href="/getting-started/">Getting Started</a></li>
                <li><a href="/security/">Security Guide</a></li>
                <li><a href="/core-developers/">Core Developers Guide</a></li>
                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
                <li><a href="/plugins/">Plugins</a></li>
                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
                <li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Contributing<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/youatstruts.html">You at Struts</a></li>
                <li><a href="/helping.html">How to Help FAQ</a></li>
                <li><a href="/dev-mail.html">Development Lists</a></li>
                <li class="divider"></li>
                <li><a href="/submitting-patches.html">Submitting patches</a></li>
                <li><a href="/builds.html">Source Code and Builds</a></li>
                <li><a href="/coding-standards.html">Coding standards</a></li>
                <li><a href="/contributors/">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/release-guidelines.html">Release Guidelines</a></li>
                <li><a href="/bylaws.html">PMC Charter</a></li>
                <li><a href="/volunteers.html">Volunteers</a></li>
                <li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
                <li><a href="/updating-website.html">Updating the website</a></li>
              </ul>
            </li>
            <li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
          </ul>
        </div>
      </div>
    </div>
  </nav>
</header>


<article class="container">
  <section class="col-md-12">
    <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/tag-developers/generator-tag.md" title="Edit this page on GitHub">Edit on GitHub</a>
    
    <a href="tag-reference.html" title="back to Tag Reference"><< back to Tag Reference</a>
    
    <h1 id="generator">generator</h1>

<p>Please make sure you have read the <a href="tag-syntax">Tag Syntax</a> document and understand how tag attribute syntax works.</p>

<h2 id="description">Description</h2>

<p>Generate an iterator based on the val attribute supplied.</p>

<blockquote>
  <p>NOTE: The generated iterator will <strong>ALWAYS</strong> be pushed into the top of the stack, and poped at the end of the tag.</p>
</blockquote>

<p>Generate an iterator for a iterable source.</p>

<h2 id="attributes">Attributes</h2>

<table class="tag-reference">
    <tr>
        <td colspan="6"><h4>Dynamic Attributes Allowed:</h4> false</td>
    </tr>
    <tr>
        <td colspan="6"><hr /></td>
    </tr>
    <tr>
        <th class="tag-header"><h4>Name</h4></th>
        <th class="tag-header"><h4>Required</h4></th>
        <th class="tag-header"><h4>Default</h4></th>
        <th class="tag-header"><h4>Evaluated</h4></th>
        <th class="tag-header"><h4>Type</h4></th>
        <th class="tag-header"><h4>Description</h4></th>
    </tr>
    <tr>
        <td class="tag-attribute">converter</td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute"></td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute">org.apache.struts2.util.IteratorGenerator.Converter</td>
        <td class="tag-attribute">The converter to convert the String entry parsed from <i>val</i> into an object</td>
    </tr>
    <tr>
        <td class="tag-attribute">count</td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute"></td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute">Integer</td>
        <td class="tag-attribute">The max number entries to be in the iterator</td>
    </tr>
    <tr>
        <td class="tag-attribute">performClearTagStateForTagPoolingServers</td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute">Boolean</td>
        <td class="tag-attribute">Whether to clear all tag state during doEndTag() processing</td>
    </tr>
    <tr>
        <td class="tag-attribute">separator</td>
        <td class="tag-attribute"><strong>true</strong></td>
        <td class="tag-attribute"></td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute">String</td>
        <td class="tag-attribute">The separator to be used in separating the <i>val</i> into entries of the iterator</td>
    </tr>
    <tr>
        <td class="tag-attribute">val</td>
        <td class="tag-attribute"><strong>true</strong></td>
        <td class="tag-attribute"></td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute">String</td>
        <td class="tag-attribute">The source to be parsed into an iterator</td>
    </tr>
    <tr>
        <td class="tag-attribute">var</td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute"></td>
        <td class="tag-attribute">false</td>
        <td class="tag-attribute">String</td>
        <td class="tag-attribute">The name to store the resultant iterator into page context, if such name is supplied</td>
    </tr>
</table>

<h2 id="examples">Examples</h2>

<p><strong>Example 1</strong>: generate a simple iterator</p>

<div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;s:generator </span><span class="na">val=</span><span class="s">"%{'aaa,bbb,ccc,ddd,eee'}"</span><span class="nt">&gt;</span>
 <span class="nt">&lt;s:iterator&gt;</span>
     <span class="nt">&lt;s:property /&gt;&lt;br/&gt;</span>
 <span class="nt">&lt;/s:iterator&gt;</span>
<span class="nt">&lt;/s:generator&gt;</span>
</code></pre></div></div>

<p>This generates an iterator and print it out using the iterator tag.</p>

<p><strong>Example 2</strong>: generate an iterator with count attribute</p>

<div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;s:generator </span><span class="na">val=</span><span class="s">"%{'aaa,bbb,ccc,ddd,eee'}"</span><span class="na"> count=</span><span class="s">"3"</span><span class="nt">&gt;</span>
 <span class="nt">&lt;s:iterator&gt;</span>
     <span class="nt">&lt;s:property /&gt;&lt;br/&gt;</span>
 <span class="nt">&lt;/s:iterator&gt;</span>
<span class="nt">&lt;/s:generator&gt;</span>
</code></pre></div></div>

<p>This generates an iterator, but only 3 entries will be available in the iterator generated, namely aaa, bbb and ccc 
respectively because count attribute is set to 3.</p>

<p><strong>Example 3</strong>: generate an iterator with var attribute</p>

<div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;s:generator </span><span class="na">val=</span><span class="s">"%{'aaa,bbb,ccc,ddd,eee'}"</span><span class="na"> count=</span><span class="s">"4"</span><span class="na"> separator=</span><span class="s">","</span><span class="na"> var=</span><span class="s">"myAtt"</span> <span class="nt">/&gt;</span>
<span class="nt">&lt;%</span>
 <span class="nc">Iterator</span> <span class="n">i</span> <span class="o">=</span> <span class="o">(</span><span class="nc">Iterator</span><span class="o">)</span> <span class="n">pageContext</span><span class="o">.</span><span class="na">getAttribute</span><span class="o">(</span><span class="s">"myAtt"</span><span class="o">);</span>
 <span class="k">while</span><span class="o">(</span><span class="n">i</span><span class="o">.</span><span class="na">hasNext</span><span class="o">())</span> <span class="o">{</span>
     <span class="nc">String</span> <span class="n">s</span> <span class="o">=</span> <span class="o">(</span><span class="nc">String</span><span class="o">)</span> <span class="n">i</span><span class="o">.</span><span class="na">next</span><span class="o">();</span> <span class="nt">%&gt;</span>
     <span class="nt">&lt;%=</span><span class="n">s</span><span class="nt">%&gt;</span> <span class="nt">&lt;br/&gt;</span>
<span class="nt">&lt;%</span>    <span class="o">}</span>
<span class="nt">%&gt;</span>
</code></pre></div></div>

<p>This generates an iterator and put it in the PageContext under the key as specified by the var attribute.</p>

<p><strong>Example 4</strong>: generate an iterator with comparator attribute</p>

<div class="language-jsp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nt">&lt;s:generator </span><span class="na">val=</span><span class="s">"%{'aaa,bbb,ccc,ddd,eee'}"</span><span class="na"> converter=</span><span class="s">"%{myConverter}"</span><span class="nt">&gt;</span>
 <span class="nt">&lt;s:iterator&gt;</span>
     <span class="nt">&lt;s:property /&gt;&lt;br/&gt;</span>
 <span class="nt">&lt;/s:iterator&gt;</span>
<span class="nt">&lt;/s:generator&gt;</span>
</code></pre></div></div>

<div class="language-java highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kd">public</span> <span class="kd">class</span> <span class="nc">GeneratorTagAction</span> <span class="kd">extends</span> <span class="nc">ActionSupport</span> <span class="o">{</span>

  <span class="o">....</span>

  <span class="kd">public</span> <span class="nc">Converter</span> <span class="nf">getMyConverter</span><span class="o">()</span> <span class="o">{</span>
     <span class="k">return</span> <span class="k">new</span> <span class="nf">Converter</span><span class="o">()</span> <span class="o">{</span>
         <span class="kd">public</span> <span class="nc">Object</span> <span class="nf">convert</span><span class="o">(</span><span class="nc">String</span> <span class="n">value</span><span class="o">)</span> <span class="kd">throws</span> <span class="nc">Exception</span> <span class="o">{</span>
             <span class="k">return</span> <span class="s">"converter-"</span><span class="o">+</span><span class="n">value</span><span class="o">;</span>
         <span class="o">}</span>
     <span class="o">};</span>
  <span class="o">}</span>

  <span class="o">...</span>

<span class="o">}</span>
</code></pre></div></div>

<p>This will generate an iterator with each entries decided by the converter supplied. With this converter, it simply 
add “converter-“ to each entries.</p>

  </section>
</article>


<footer class="container">
  <div class="col-md-12">
    Copyright &copy; 2000-2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
    trademarks of The Apache Software Foundation. All Rights Reserved.
  </div>
  <div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>

<script>!function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (!d.getElementById(id)) {
    js = d.createElement(s);
    js.id = id;
    js.src = "//platform.twitter.com/widgets.js";
    fjs.parentNode.insertBefore(js, fjs);
  }
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>

<div id="fb-root"></div>

<script>(function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s);
  js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>


</body>
</html>
