Please make sure you have read the Tag Syntax document and understand how tag attribute syntax works.
A tag that takes an iterator and outputs a subset of it. It delegates to org.apache.struts2.util.SubsetIteratorFilter
internally to perform the subset functionality.
{% remote_file_content https://raw.githubusercontent.com/apache/struts/master/core/src/site/resources/tags/subset-description.html %}
{% remote_file_content https://raw.githubusercontent.com/apache/struts/master/core/src/site/resources/tags/subset-attributes.html %}
public class MySubsetTagAction extends ActionSupport { public String execute() throws Exception { l = new ArrayList(); l.add(new Integer(1)); l.add(new Integer(2)); l.add(new Integer(3)); l.add(new Integer(4)); l.add(new Integer(5)); return "done"; } public Integer[] getMyArray() { return a; } public List getMyList() { return l; } public Decider getMyDecider() { return new Decider() { public boolean decide(Object element) throws Exception { int i = ((Integer)element).intValue(); return (((i % 2) == 0)?true:false); } }; } }
Basic example
<s:subset source="myList"> <s:iterator> <s:property /> </s:iterator> </s:subset>
List with count
<s:subset source="myList" count="3"> <s:iterator> <s:property /> </s:iterator> </s:subset>
List with start
<s:subset source="myList" count="13" start="3"> <s:iterator> <s:property /> </s:iterator> </s:subset>
List with var
<s:subset var="mySubset" source="myList" count="13" start="3" /> <% Iterator i = (Iterator) pageContext.getAttribute("mySubset"); while(i.hasNext()) { %> <%=i.next() %> <% } %>
List with Decider
<s:subset source="myList" decider="myDecider"> <s:iterator> <s:property /> </s:iterator> </s:subset>