This Confluence has been LDAP enabled, if you are an ASF Committer, please use your LDAP Credentials to login. Any problems file an INFRA jira ticket please.

Child pages
  • generator
Skip to end of metadata
Go to start of metadata

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

Error rendering macro 'code': Invalid value specified for parameter 'java.lang.NullPointerException'
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.
  • No labels

4 Comments

  1. In the code example, change

    Generate an iterator with comparator attribute

    to

    {{
    Generate an iterator with converter attribute}}

    Also change

    this converter, it simply add "converter-" to each entries.

    to

    this converter, it simply add "converter-" to each entry.

    1. Jan - good changes. I'll suggest the following tweak:

      this converter, it simply adds "converter-" to each entry.

  2. The "separator" attribute appears to be required, but it isn't referenced in several of the examples on this page.

    Assuming we're supposed to be following "convention, not configuration", shouldn't this be an optional attribute, with a default value of ","?