Class StrutsBodyTagSupport
- All Implemented Interfaces:
jakarta.servlet.jsp.tagext.BodyTag
,jakarta.servlet.jsp.tagext.IterationTag
,jakarta.servlet.jsp.tagext.JspTag
,jakarta.servlet.jsp.tagext.Tag
,Serializable
- Direct Known Subclasses:
ComponentTagSupport
,IteratorGeneratorTag
,SortIteratorTag
,SubsetIteratorTag
- See Also:
-
Field Summary
Fields inherited from class jakarta.servlet.jsp.tagext.BodyTagSupport
bodyContent
Fields inherited from class jakarta.servlet.jsp.tagext.TagSupport
id, pageContext
Fields inherited from interface jakarta.servlet.jsp.tagext.BodyTag
EVAL_BODY_BUFFERED, EVAL_BODY_TAG
Fields inherited from interface jakarta.servlet.jsp.tagext.IterationTag
EVAL_BODY_AGAIN
Fields inherited from interface jakarta.servlet.jsp.tagext.Tag
EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected void
Provide a mechanism to clear tag state, to handle servlet container JSP tag pooling behaviour with some servers, such as Glassfish.int
doEndTag()
protected String
findString
(String expr) protected Object
protected Object
protected String
getBody()
protected boolean
Allow descendant tags to check if the tag state should be cleared duringdoEndTag()
processing,protected ValueStack
getStack()
void
release()
Release state for a Struts JSP Tag handler.void
setPerformClearTagStateForTagPoolingServers
(boolean performClearTagStateForTagPoolingServers) Request that the tag state be cleared duringdoEndTag()
processing, which may help with certain edge cases with tag logic running on servers that implement JSP Tag Pooling.protected String
Methods inherited from class jakarta.servlet.jsp.tagext.BodyTagSupport
doAfterBody, doInitBody, doStartTag, getBodyContent, getPreviousOut, setBodyContent
Methods inherited from class jakarta.servlet.jsp.tagext.TagSupport
findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setId, setPageContext, setParent, setValue
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface jakarta.servlet.jsp.tagext.Tag
getParent, setPageContext, setParent
-
Constructor Details
-
StrutsBodyTagSupport
public StrutsBodyTagSupport()
-
-
Method Details
-
getStack
-
findString
-
findValue
-
findValue
-
toString
-
getBody
-
doEndTag
public int doEndTag() throws jakarta.servlet.jsp.JspException- Specified by:
doEndTag
in interfacejakarta.servlet.jsp.tagext.Tag
- Overrides:
doEndTag
in classjakarta.servlet.jsp.tagext.BodyTagSupport
- Throws:
jakarta.servlet.jsp.JspException
-
release
public void release()Release state for a Struts JSP Tag handler.According to the JSP API documentation, the page compiler guarantees that the release() method will be invoked on the Tag handler before releasing it to the GC (garbage collector). It does not specify when the release() call will be made, though, and timing likely depends on the implementation of the JSP/servlet engine being used.
- Specified by:
release
in interfacejakarta.servlet.jsp.tagext.Tag
- Overrides:
release
in classjakarta.servlet.jsp.tagext.BodyTagSupport
-
setPerformClearTagStateForTagPoolingServers
public void setPerformClearTagStateForTagPoolingServers(boolean performClearTagStateForTagPoolingServers) Request that the tag state be cleared duringdoEndTag()
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 classStrutsBodyTagSupport
, and this methodsetPerformClearTagStateForTagPoolingServers(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
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.- Parameters:
performClearTagStateForTagPoolingServers
- true if tag state should be cleared, false otherwise.
-
getPerformClearTagStateForTagPoolingServers
protected boolean getPerformClearTagStateForTagPoolingServers()Allow descendant tags to check if the tag state should be cleared duringdoEndTag()
processing,- Returns:
- true if tag state should be cleared, false (default) otherwise.
-
clearTagStateForTagPoolingServers
protected void clearTagStateForTagPoolingServers()Provide a mechanism to clear tag state, to handle servlet container JSP tag pooling behaviour with some servers, such as Glassfish.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
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.
-