org.springframework.web.servlet.tags.form

## Class AbstractDataBoundFormElementTag

- 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

- All Implemented Interfaces:
    Serializable, IterationTag, JspTag, Tag, TryCatchFinally, EditorAwareTag
  Direct Known Subclasses:
    AbstractHtmlElementTag

      public abstract class AbstractDataBoundFormElementTag
      extends AbstractFormTag
      implements EditorAwareTag

  Base tag for all data-binding aware JSP form tags.

  Provides the common `path` and `id` properties. Provides sub-classes with utility methods for accessing the `BindStatus` of their bound value and also for `interacting` with the `TagWriter`.

  Since:
    2.0
  Author:
    Rob Harrop, Juergen Hoeller
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `COMMAND_NAME_VARIABLE_NAME` Deprecated. as of Spring 2.5, in favor of `FormTag.MODEL_ATTRIBUTE_VARIABLE_NAME`
    `protected static String` | `NESTED_PATH_VARIABLE_NAME` Name of the exposed path variable within the scope of this tag: "nestedPath".

    - ### 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.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
    `AbstractDataBoundFormElementTag()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected String` | `autogenerateId()` Autogenerate the '`id`' attribute value for this tag.
    `protected String` | `convertToDisplayString(Object value)` Get a display String for the given value, converted by a PropertyEditor that the BindStatus may have registered for the value's Class.
    `void` | `doFinally()` Disposes of the `BindStatus` instance.
    `protected BindStatus` | `getBindStatus()` Get the `BindStatus` for this tag.
    `protected Object` | `getBoundValue()` Get the bound value.
    `PropertyEditor` | `getEditor()` Exposes the `PropertyEditor` for `EditorAwareTag`.
    `String` | `getId()` Get the value of the '`id`' attribute.
    `protected String` | `getName()` Get the value for the HTML '`name`' attribute.
    `protected String` | `getNestedPath()` Get the value of the nested path that may have been exposed by the `NestedPathTag`.
    `protected String` | `getPath()` Get the `resolved` property path for the `form object`.
    `protected PropertyEditor` | `getPropertyEditor()` Get the `PropertyEditor`, if any, in use for value bound to this tag.
    `protected String` | `getPropertyPath()` Build the property path for this tag, including the nested path but not prefixed with the name of the form attribute.
    `protected String` | `processFieldValue(String name, String value, String type)` Process the given form field through a `RequestDataValueProcessor` instance if one is configured or otherwise returns the same value.
    `protected String` | `resolveId()` Determine the '`id`' attribute value for this tag, autogenerating one if none specified.
    `void` | `setId(String id)` Set the value of the '`id`' attribute.
    `void` | `setPath(String path)` Set the property path from the `form object`.
    `protected void` | `writeDefaultAttributes(TagWriter tagWriter)` Writes the default set of attributes to the supplied `TagWriter`.

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

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

    - ### 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, doEndTag, 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`

- - ### Field Detail

    - #### NESTED_PATH_VARIABLE_NAME

          protected static final String NESTED_PATH_VARIABLE_NAME

      Name of the exposed path variable within the scope of this tag: "nestedPath". Same value as `NestedPathTag.NESTED_PATH_VARIABLE_NAME`.
      See Also:
        Constant Field Values

    - #### COMMAND_NAME_VARIABLE_NAME

          @Deprecated
          public static final String COMMAND_NAME_VARIABLE_NAME

      Deprecated. as of Spring 2.5, in favor of `FormTag.MODEL_ATTRIBUTE_VARIABLE_NAME`
      The name of the `PageContext` attribute under which the command object name is exposed.

  - ### Constructor Detail

    - #### AbstractDataBoundFormElementTag

          public AbstractDataBoundFormElementTag()

  - ### Method Detail

    - #### setPath

          public void setPath(String path)

      Set the property path from the `form object`. May be a runtime expression.

    - #### getPath

          protected final String getPath()
                                  throws JspException

      Get the `resolved` property path for the `form object`.
      Throws:
        `JspException`

    - #### setId

          public void setId(String id)

      Set the value of the '`id`' attribute.

      May be a runtime expression; defaults to the value of `getName()`. Note that the default value may not be valid for certain tags.

      Overrides:
        `setId` in class `TagSupport`

    - #### getId

          public String getId()

      Get the value of the '`id`' attribute.
      Overrides:
        `getId` in class `TagSupport`

    - #### writeDefaultAttributes

          protected void writeDefaultAttributes(TagWriter tagWriter)
                                         throws JspException

      Writes the default set of attributes to the supplied `TagWriter`. Further abstract sub-classes should override this method to add in any additional default attributes but must remember to call the `super` method.

      Concrete sub-classes should call this method when/if they want to render default attributes.

      Parameters:
        `tagWriter` - the `TagWriter` to which any attributes are to be written
      Throws:
        `JspException`

    - #### resolveId

          protected String resolveId()
                              throws JspException

      Determine the '`id`' attribute value for this tag, autogenerating one if none specified.
      Throws:
        `JspException`
      See Also:
        `getId()`, `autogenerateId()`

    - #### autogenerateId

          protected String autogenerateId()
                                   throws JspException

      Autogenerate the '`id`' attribute value for this tag.

      The default implementation simply delegates to `getName()`, deleting invalid characters (such as "[" or "]").

      Throws:
        `JspException`

    - #### getName

          protected String getName()
                            throws JspException

      Get the value for the HTML '`name`' attribute.

      The default implementation simply delegates to `getPropertyPath()` to use the property path as the name. For the most part this is desirable as it links with the server-side expectation for data binding. However, some subclasses may wish to change the value of the '`name`' attribute without changing the bind path.

      Returns:
        the value for the HTML '`name`' attribute
      Throws:
        `JspException`

    - #### getBindStatus

          protected BindStatus getBindStatus()
                                      throws JspException

      Get the `BindStatus` for this tag.
      Throws:
        `JspException`

    - #### getNestedPath

          protected String getNestedPath()

      Get the value of the nested path that may have been exposed by the `NestedPathTag`.

    - #### getPropertyPath

          protected String getPropertyPath()
                                    throws JspException

      Build the property path for this tag, including the nested path but not prefixed with the name of the form attribute.
      Throws:
        `JspException`
      See Also:
        `getNestedPath()`, `getPath()`

    - #### getBoundValue

          protected final Object getBoundValue()
                                        throws JspException

      Get the bound value.
      Throws:
        `JspException`
      See Also:
        `getBindStatus()`

    - #### getPropertyEditor

          protected PropertyEditor getPropertyEditor()
                                              throws JspException

      Get the `PropertyEditor`, if any, in use for value bound to this tag.
      Throws:
        `JspException`

    - #### getEditor

          public final PropertyEditor getEditor()
                                         throws JspException

      Exposes the `PropertyEditor` for `EditorAwareTag`.

      Use `getPropertyEditor()` for internal rendering purposes.

      Specified by:
        `getEditor` in interface `EditorAwareTag`
      Returns:
        the current PropertyEditor, or `null` if none
      Throws:
        `JspException` - if resolving the editor failed

    - #### convertToDisplayString

          protected String convertToDisplayString(Object value)
                                           throws JspException

      Get a display String for the given value, converted by a PropertyEditor that the BindStatus may have registered for the value's Class.
      Throws:
        `JspException`

    - #### processFieldValue

          protected final String processFieldValue(String name,
                                 String value,
                                 String type)

      Process the given form field through a `RequestDataValueProcessor` instance if one is configured or otherwise returns the same value.

    - #### doFinally

          public void doFinally()

      Disposes of the `BindStatus` instance.
      Specified by:
        `doFinally` in interface `TryCatchFinally`
      Overrides:
        `doFinally` in class `RequestContextAwareTag`