Hi Osama! It's so cool. It worked after I did what you said.
But... I'm confused... when doStartTag() returns EVAL_BODY_INCLUDE, doesn't the control go to evaluate body? why do I have to have EVAL_BODY_BUFFERED? I don't have setBodyContent() or doInitBody() defined.
Hi Jenny! BodyContent is available only when the body is buffered. Thus, when we return EVAL_BODY_INCLUDE from doStartTag() the body is not buffered and hence BodyContent is not available.