public class SubsetIteratorTag extends StrutsBodyTagSupport
A tag that takes an iterator and outputs a subset of it. It delegates to
SubsetIteratorFilter
internally to
perform the subset functionality.
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); } }; } }
<!-- s: List basic --> <s:subset source="myList"> <s:iterator> <s:property /> </s:iterator> </s:subset>
<!-- B: List with count --> <s:subset source="myList" count="3"> <s:iterator> <s:property /> </s:iterator> </s:subset>
<!-- C: List with start --> <s:subset source="myList" count="13" start="3"> <s:iterator> <s:property /> </s:iterator> </s:subset>
<!-- D: List with var --> <s:subset var="mySubset" source="myList" count="13" start="3" /> <% Iterator i = (Iterator) pageContext.getAttribute("mySubset"); while(i.hasNext()) { %> <%=i.next() %> <% } %>
<!-- D: List with Decider --> <s:subset source="myList" decider="myDecider"> <s:iterator> <s:property /> </s:iterator> </s:subset>@s.tag name="subset" tld-body-content="JSP" description="Takes an iterator and outputs a subset of it"
Constructor and Description |
---|
SubsetIteratorTag() |
Modifier and Type | Method and Description |
---|---|
protected void |
clearTagStateForTagPoolingServers()
Provide a mechanism to clear tag state, to handle servlet container JSP tag pooling
behaviour with some servers, such as Glassfish.
|
int |
doEndTag() |
int |
doStartTag() |
void |
setCount(String count) |
void |
setDecider(String decider) |
void |
setPerformClearTagStateForTagPoolingServers(boolean performClearTagStateForTagPoolingServers)
Request that the tag state be cleared during
StrutsBodyTagSupport.doEndTag() processing,
which may help with certain edge cases with tag logic running on servers that implement JSP Tag Pooling. |
void |
setSource(String source) |
void |
setStart(String start)
@s.tagattribute required="false" type="Integer"
description="Indicate the starting index (eg.
|
void |
setVar(String var) |
findString, findValue, findValue, getBody, getPerformClearTagStateForTagPoolingServers, getStack, release, toString
doAfterBody, doInitBody, getBodyContent, getPreviousOut, setBodyContent
findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue
public void setCount(String count)
public void setSource(String source)
public void setStart(String start)
start
- startpublic void setDecider(String decider)
public void setVar(String var)
public void setPerformClearTagStateForTagPoolingServers(boolean performClearTagStateForTagPoolingServers)
StrutsBodyTagSupport
StrutsBodyTagSupport.doEndTag()
processing,
which may help with certain edge cases with tag logic running on servers that implement JSP Tag Pooling.
Note: Even though the Tag classes extend this class StrutsBodyTagSupport
, and this method
StrutsBodyTagSupport.setPerformClearTagStateForTagPoolingServers(boolean)
exists in the method hierarchy,
the JSP processing requires us to explicitly override it in every Tag class in order for the Tag handler
method to be visible to the JSP processing.
Defining a setter in the superclass alone is insufficient (results in "Cannot find a setter method for the attribute").
See StrutsBodyTagSupport.clearTagStateForTagPoolingServers()
for additional details.
Warning: Setting this value to true may allow for the desired behaviour, but doing so
may violate the JSP specification. Set to true at your own risk.
setPerformClearTagStateForTagPoolingServers
in class StrutsBodyTagSupport
performClearTagStateForTagPoolingServers
- true if tag state should be cleared, false otherwise.public int doStartTag() throws javax.servlet.jsp.JspException
doStartTag
in interface javax.servlet.jsp.tagext.Tag
doStartTag
in class javax.servlet.jsp.tagext.BodyTagSupport
javax.servlet.jsp.JspException
public int doEndTag() throws javax.servlet.jsp.JspException
doEndTag
in interface javax.servlet.jsp.tagext.Tag
doEndTag
in class StrutsBodyTagSupport
javax.servlet.jsp.JspException
protected void clearTagStateForTagPoolingServers()
StrutsBodyTagSupport
Usage: Override this method in descendant classes to clear any state that might cause issues should the
servlet container re-use a cached instance of the tag object. If the descendant class does not
declare any new field members then it should not be strictly necessary to call this method there.
Typically that means calling the ancestor's ComponentTagSupport.clearTagStateForTagPoolingServers()
method first, then resetting instance variables at the current level to their default state.
Note: If the descendant overrides StrutsBodyTagSupport.doEndTag()
, and does not call
super.doEndTag(), then the descendant should call this method in the descendant doEndTag() method
to ensure consistent clearing of tag state.
clearTagStateForTagPoolingServers
in class StrutsBodyTagSupport
Copyright © 2000–2024 Apache Software Foundation. All rights reserved.