If you don’t override the TagSupport lifecycle methods that return an integer, be aware of the default values the TagSupport method implementations return. The TagSupport class assumes that your tag doesn’t have a body (by returning SKIP_BODY) from doStartTag()), and that if you DO have a body that’s evaluated, you want it evaluated only once (by returning SKIP_BODY from doAfterBody()). It also assumes that you want the rest of the page to evaluate (by returning EVAL-PAGE from doEndtag()).
Default return values when you don’t override the TagSupport method implementation
The TagSupport class assumes your tag doesn’t have a body, or that if the body IS evaluated, that the body should be evaluated only ONCE.
It also assumes that you always want the rest of the page to be evaluated.
doStartTag() and doEndTag() run exactly once.
You really must know this lifecycle for the exam. Don’t forget that doStartTag() and doEndTag() are always called, and they’re called only once, regardless of anything else that happens. But doAfterBody() can run from 0 to many times, depending on the return value of doStartTag() and previous doAfterBody() calls.
You MUST override doStartTag() if you want the tag body to be evaluated!!
Think about it! The default return value from doStartTag() is SKIP_BODY, so if you want the body of your tag evaluated, and you extend TagSupport, ...