code: public int doAfterBody() throws JspException
      {
          StringBuilderRenderAppender writer = new StringBuilderRenderAppender(_saveBody);
          if (bodyContent != null) {
              String value = bodyContent.getString();
              bodyContent.clearBody();
              if (value == null)
                  value = "";
              _saveBody.append(value);
          }
  
          if (_repeater) {
              ServletRequest req = pageContext.getRequest();
              if (_cr == null)
                  _cr = TagRenderingBase.Factory.getConstantRendering(req);
              if (isVertical())
                  _cr.end_TD_TR(writer);
  
              while (((Iterator) _dynamicAttrs).hasNext()) {
                  _repCurItem = ((Iterator) _dynamicAttrs).next();
                  if (_repCurItem != null) {
                      _repIdx++;
                      if (isVertical())
                          _cr.TR_TD(writer);
                      return EVAL_BODY_AGAIN;
                  }
              }
          }
  
          return SKIP_BODY;
      }
docs: Save any body content of this tag, which will generally be the
  option(s) representing the values displayed to the user.
  @throws JspException if a JSP exception has occurred