Edit on GitHub

# generator

Description

NOTE: JSP-TAG

Generate an iterator based on the val attribute supplied.

NOTE: The generated iterator will ALWAYS be pushed into the top of the stack, and poped at the end of the tag.

Parameters

#### Dynamic Attributes Allowed: false
#### Name | #### Required | #### Default | #### Evaluated | #### Type | #### Description
--- | --- | --- | --- | --- | ---
converter | false |  | false | org.apache.struts2.util.IteratorGenerator.Converter | The converter to convert the String entry parsed from val into an object
count | false |  | false | Integer | The max number entries to be in the iterator
separator | true |  | false | String | The separator to be used in separating the val into entries of the iterator
val | true |  | false | String | The source to be parsed into an iterator
var | false |  | false | String | The name to store the resultant iterator into page context, if such name is supplied

Examples

     Example One:
     <pre>
     Generate a simple iterator
     <s:generator val="%{'aaa,bbb,ccc,ddd,eee'}">
      <s:iterator>
          <s:property /><br/>
      </s:iterator>
     </s:generator>
     </pre>
     This generates an iterator and print it out using the iterator tag.

     Example Two:
     <pre>
     Generate an iterator with count attribute
     <s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="3">
      <s:iterator>
          <s:property /><br/>
      </s:iterator>
     </s:generator>
     </pre>
     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

     Example Three:
     <pre>
     Generate an iterator with var attribute
     <s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" count="4" separator="," var="myAtt" />
     <%
      Iterator i = (Iterator) pageContext.getAttribute("myAtt");
      while(i.hasNext()) {
          String s = (String) i.next(); %>
          <%=s%> <br/>
     <%    }
     %>
     </pre>
     This generates an iterator and put it in the PageContext under the key as specified
     by the var attribute.

     Example Four:
     <pre>
     Generate an iterator with comparator attribute
     <s:generator val="%{'aaa,bbb,ccc,ddd,eee'}" converter="%{myConverter}">
      <s:iterator>
          <s:property /><br/>
      </s:iterator>
     </s:generator>

     public class GeneratorTagAction extends ActionSupport {

       ....

       public Converter getMyConverter() {
          return new Converter() {
              public Object convert(String value) throws Exception {
                  return "converter-"+value;
              }
          };
       }

       ...

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