org.springframework.web.servlet.tags.form

## Class AbstractHtmlElementBodyTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - org.springframework.web.servlet.tags.RequestContextAwareTag
    - - org.springframework.web.servlet.tags.HtmlEscapingAwareTag
      - - org.springframework.web.servlet.tags.form.AbstractFormTag
        - - org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag
          - - org.springframework.web.servlet.tags.form.AbstractHtmlElementTag
            - - org.springframework.web.servlet.tags.form.AbstractHtmlElementBodyTag

- All Implemented Interfaces:
    Serializable, BodyTag, DynamicAttributes, IterationTag, JspTag, Tag, TryCatchFinally, EditorAwareTag
  Direct Known Subclasses:
    ErrorsTag, OptionTag

      public abstract class AbstractHtmlElementBodyTag
      extends AbstractHtmlElementTag
      implements BodyTag

  Convenient super class for many html tags that render content using the databinding features of the `AbstractHtmlElementTag`. The only thing sub tags need to do is override `renderDefaultContent(TagWriter)`.
  Since:
    2.0
  Author:
    Rob Harrop, Juergen Hoeller
  See Also:
    Serialized Form

- - ### Field Summary

    - ### Fields inherited from class org.springframework.web.servlet.tags.form.AbstractHtmlElementTag

      `CLASS_ATTRIBUTE, DIR_ATTRIBUTE, LANG_ATTRIBUTE, ONCLICK_ATTRIBUTE, ONDBLCLICK_ATTRIBUTE, ONKEYDOWN_ATTRIBUTE, ONKEYPRESS_ATTRIBUTE, ONKEYUP_ATTRIBUTE, ONMOUSEDOWN_ATTRIBUTE, ONMOUSEMOVE_ATTRIBUTE, ONMOUSEOUT_ATTRIBUTE, ONMOUSEOVER_ATTRIBUTE, ONMOUSEUP_ATTRIBUTE, STYLE_ATTRIBUTE, TABINDEX_ATTRIBUTE, TITLE_ATTRIBUTE`

    - ### Fields inherited from class org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag

      `NESTED_PATH_VARIABLE_NAME`

    - ### Fields inherited from class org.springframework.web.servlet.tags.RequestContextAwareTag

      `logger, REQUEST_CONTEXT_PAGE_ATTRIBUTE`

    - ### Fields inherited from class javax.servlet.jsp.tagext.TagSupport

      `pageContext`

    - ### Fields inherited from interface javax.servlet.jsp.tagext.BodyTag

      `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

    - ### Fields inherited from interface javax.servlet.jsp.tagext.IterationTag

      `EVAL_BODY_AGAIN`

    - ### Fields inherited from interface javax.servlet.jsp.tagext.Tag

      `EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractHtmlElementBodyTag()`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `doEndTag()` If `rendering`, flush any buffered `BodyContent` or, if no `BodyContent` is supplied, `render the default content`.
    `void` | `doFinally()` Clean up any attributes and stored resources.
    `void` | `doInitBody()`
    `protected void` | `exposeAttributes()` Called during `writeTagContent(org.springframework.web.servlet.tags.form.TagWriter)` allowing subclasses to add any attributes to the `PageContext` as needed.
    `protected void` | `flushBufferedBodyContent(BodyContent bodyContent)` The user customised the output of the error messages - flush the buffered content into the main `JspWriter`.
    `protected void` | `onWriteTagContent()` Called at the start of `writeTagContent(org.springframework.web.servlet.tags.form.TagWriter)` allowing subclasses to perform any precondition checks or setup tasks that might be necessary.
    `protected void` | `removeAttributes()` Called by `doFinally()` allowing subclasses to remove any attributes from the `PageContext` as needed.
    `protected abstract void` | `renderDefaultContent(TagWriter tagWriter)`
    `protected void` | `renderFromBodyContent(BodyContent bodyContent, TagWriter tagWriter)` Render the tag contents based on the supplied `BodyContent`.
    `void` | `setBodyContent(BodyContent bodyContent)`
    `protected boolean` | `shouldRender()` Should rendering of this tag proceed at all.
    `protected int` | `writeTagContent(TagWriter tagWriter)` Subclasses should implement this method to perform tag content rendering.

    - ### Methods inherited from class org.springframework.web.servlet.tags.form.AbstractHtmlElementTag

      `getCssClass, getCssErrorClass, getCssStyle, getDir, getDynamicAttributes, getLang, getOnclick, getOndblclick, getOnkeydown, getOnkeypress, getOnkeyup, getOnmousedown, getOnmousemove, getOnmouseout, getOnmouseover, getOnmouseup, getTabindex, getTitle, isValidDynamicAttribute, resolveCssClass, setCssClass, setCssErrorClass, setCssStyle, setDir, setDynamicAttribute, setLang, setOnclick, setOndblclick, setOnkeydown, setOnkeypress, setOnkeyup, setOnmousedown, setOnmousemove, setOnmouseout, setOnmouseover, setOnmouseup, setTabindex, setTitle, writeDefaultAttributes, writeOptionalAttributes`

    - ### Methods inherited from class org.springframework.web.servlet.tags.form.AbstractDataBoundFormElementTag

      `autogenerateId, convertToDisplayString, getBindStatus, getBoundValue, getEditor, getId, getName, getNestedPath, getPath, getPropertyEditor, getPropertyPath, processFieldValue, resolveId, setId, setPath`

    - ### Methods inherited from class org.springframework.web.servlet.tags.form.AbstractFormTag

      `createTagWriter, doStartTagInternal, evaluate, getDisplayString, getDisplayString, isDefaultHtmlEscape, writeOptionalAttribute`

    - ### Methods inherited from class org.springframework.web.servlet.tags.HtmlEscapingAwareTag

      `isHtmlEscape, setHtmlEscape`

    - ### Methods inherited from class org.springframework.web.servlet.tags.RequestContextAwareTag

      `doCatch, doStartTag, getRequestContext`

    - ### Methods inherited from class javax.servlet.jsp.tagext.TagSupport

      `doAfterBody, findAncestorWithClass, getParent, getValue, getValues, release, removeValue, 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 javax.servlet.jsp.tagext.IterationTag

      `doAfterBody`

    - ### Methods inherited from interface javax.servlet.jsp.tagext.Tag

      `doStartTag, getParent, release, setPageContext, setParent`

- - ### Constructor Detail

    - #### AbstractHtmlElementBodyTag

          public AbstractHtmlElementBodyTag()

  - ### Method Detail

    - #### writeTagContent

          protected int writeTagContent(TagWriter tagWriter)
                                 throws JspException

      Description copied from class: `AbstractFormTag`
      Subclasses should implement this method to perform tag content rendering.
      Specified by:
        `writeTagContent` in class `AbstractFormTag`
      Returns:
        valid tag render instruction as per `Tag.doStartTag()`.
      Throws:
        `JspException`

    - #### doEndTag

          public int doEndTag()
                       throws JspException

      If `rendering`, flush any buffered `BodyContent` or, if no `BodyContent` is supplied, `render the default content`.
      Specified by:
        `doEndTag` in interface `Tag`
      Overrides:
        `doEndTag` in class `TagSupport`
      Returns:
        Tag#EVAL_PAGE
      Throws:
        `JspException`

    - #### renderFromBodyContent

          protected void renderFromBodyContent(BodyContent bodyContent,
                                               TagWriter tagWriter)
                                        throws JspException

      Render the tag contents based on the supplied `BodyContent`.

      The default implementation simply `flushes` the `BodyContent` directly to the output. Subclasses may choose to override this to add additional content to the output.

      Throws:
        `JspException`

    - #### doFinally

          public void doFinally()

      Clean up any attributes and stored resources.
      Specified by:
        `doFinally` in interface `TryCatchFinally`
      Overrides:
        `doFinally` in class `AbstractDataBoundFormElementTag`

    - #### onWriteTagContent

          protected void onWriteTagContent()

      Called at the start of `writeTagContent(org.springframework.web.servlet.tags.form.TagWriter)` allowing subclasses to perform any precondition checks or setup tasks that might be necessary.

    - #### shouldRender

          protected boolean shouldRender()
                                  throws JspException

      Should rendering of this tag proceed at all. Returns '`true`' by default causing rendering to occur always, Subclasses can override this if they provide conditional rendering.
      Throws:
        `JspException`

    - #### exposeAttributes

          protected void exposeAttributes()
                                   throws JspException

      Called during `writeTagContent(org.springframework.web.servlet.tags.form.TagWriter)` allowing subclasses to add any attributes to the `PageContext` as needed.
      Throws:
        `JspException`

    - #### removeAttributes

          protected void removeAttributes()

      Called by `doFinally()` allowing subclasses to remove any attributes from the `PageContext` as needed.

    - #### flushBufferedBodyContent

          protected void flushBufferedBodyContent(BodyContent bodyContent)
                                           throws JspException

      The user customised the output of the error messages - flush the buffered content into the main `JspWriter`.
      Throws:
        `JspException`

    - #### renderDefaultContent

          protected abstract void renderDefaultContent(TagWriter tagWriter)
                                                throws JspException

      Throws:
        `JspException`

    - #### doInitBody

          public void doInitBody()
                          throws JspException

      Specified by:
        `doInitBody` in interface `BodyTag`
      Throws:
        `JspException`

    - #### setBodyContent

          public void setBodyContent(BodyContent bodyContent)

      Specified by:
        `setBodyContent` in interface `BodyTag`