org.springframework.web.servlet.tags.form

## Class FormTag

- 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.FormTag

- All Implemented Interfaces:
    Serializable, DynamicAttributes, IterationTag, JspTag, Tag, TryCatchFinally, EditorAwareTag

      public class FormTag
      extends AbstractHtmlElementTag

  Databinding-aware JSP tag for rendering an HTML '`form`' whose inner elements are bound to properties on a form object.

  Users should place the form object into the `ModelAndView` when populating the data for their view. The name of this form object can be configured using the `"modelAttribute"` property.

  The default value for the `"modelAttribute"` property is '`command`' which corresponds to the default name when using the `SimpleFormController`.

  Since:
    2.0
  Author:
    Rob Harrop, Juergen Hoeller, Scott Andrews, Rossen Stoyanchev
  See Also:
    `SimpleFormController`, Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `DEFAULT_COMMAND_NAME` The default attribute name: "command"
    `static String` | `MODEL_ATTRIBUTE_VARIABLE_NAME` The name of the `PageContext` attribute under which the form object name is exposed.

    - ### 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

      `COMMAND_NAME_VARIABLE_NAME, 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.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
    `FormTag()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected String` | `autogenerateId()` Autogenerated IDs correspond to the form object name.
    `int` | `doEndTag()` Closes the '`form`' block tag and removes the form object name from the `PageContext`.
    `void` | `doFinally()` Clears the stored `TagWriter`.
    `protected String` | `getAcceptCharset()` Get the value of the '`acceptCharset`' attribute.
    `protected String` | `getAction()` Get the value of the '`action`' attribute.
    `protected String` | `getAutocomplete()` Get the value of the '`autocomplete`' attribute.
    `protected String` | `getCommandName()` Get the name of the form attribute in the model.
    `protected String` | `getEnctype()` Get the value of the '`enctype`' attribute.
    `protected String` | `getMethod()` Get the value of the '`method`' attribute.
    `protected String` | `getMethodParameter()` Get the name of the request param for non-browser supported HTTP methods.
    `protected String` | `getModelAttribute()` Get the name of the form attribute in the model.
    `protected String` | `getName()` Get the value of the '`name`' attribute.
    `protected String` | `getOnreset()` Get the value of the '`onreset`' attribute.
    `protected String` | `getOnsubmit()` Get the value of the '`onsubmit`' attribute.
    `protected String` | `getServletRelativeAction()` Get the value of the '`action`' attribute.
    `String` | `getTarget()` Get the value of the '`target`' attribute.
    `protected boolean` | `isMethodBrowserSupported(String method)` Determine if the HTTP method is supported by browsers (i.e.
    `protected String` | `resolveAction()` Resolve the value of the '`action`' attribute.
    `protected String` | `resolveCssClass()` Override resolve CSS class since error class is not supported.
    `protected String` | `resolveModelAttribute()` `Resolves` and returns the name of the form object.
    `void` | `setAcceptCharset(String acceptCharset)` Set the value of the '`acceptCharset`' attribute.
    `void` | `setAction(String action)` Set the value of the '`action`' attribute.
    `void` | `setAutocomplete(String autocomplete)` Set the value of the '`autocomplete`' attribute.
    `void` | `setCommandName(String commandName)` Set the name of the form attribute in the model.
    `void` | `setCssErrorClass(String cssErrorClass)` Unsupported for forms.
    `void` | `setEnctype(String enctype)` Set the value of the '`enctype`' attribute.
    `void` | `setMethod(String method)` Set the value of the '`method`' attribute.
    `void` | `setMethodParam(String methodParam)` Set the name of the request param for non-browser supported HTTP methods.
    `void` | `setModelAttribute(String modelAttribute)` Set the name of the form attribute in the model.
    `void` | `setName(String name)` Set the value of the '`name`' attribute.
    `void` | `setOnreset(String onreset)` Set the value of the '`onreset`' attribute.
    `void` | `setOnsubmit(String onsubmit)` Set the value of the '`onsubmit`' attribute.
    `void` | `setPath(String path)` Unsupported for forms.
    `void` | `setServletRelativeAction(String servletRelativeaction)` Set the value of the '`action`' attribute.
    `void` | `setTarget(String target)` Set the value of the '`target`' attribute.
    `protected int` | `writeTagContent(TagWriter tagWriter)` Writes the opening part of the block '`form`' tag and exposes the form object name in the `PageContext`.

    - ### 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, setCssClass, 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

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

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

      `createTagWriter, doStartTagInternal, evaluate, evaluateBoolean, 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`

- - ### Field Detail

    - #### DEFAULT_COMMAND_NAME

          public static final String DEFAULT_COMMAND_NAME

      The default attribute name: "command"
      See Also:
        Constant Field Values

    - #### MODEL_ATTRIBUTE_VARIABLE_NAME

          public static final String MODEL_ATTRIBUTE_VARIABLE_NAME

      The name of the `PageContext` attribute under which the form object name is exposed.

  - ### Constructor Detail

    - #### FormTag

          public FormTag()

  - ### Method Detail

    - #### setModelAttribute

          public void setModelAttribute(String modelAttribute)

      Set the name of the form attribute in the model.

      May be a runtime expression.

    - #### getModelAttribute

          protected String getModelAttribute()

      Get the name of the form attribute in the model.

    - #### setCommandName

          public void setCommandName(String commandName)

      Set the name of the form attribute in the model.

      May be a runtime expression.

      See Also:
        `setModelAttribute(java.lang.String)`

    - #### getCommandName

          protected String getCommandName()

      Get the name of the form attribute in the model.
      See Also:
        `getModelAttribute()`

    - #### setName

          public void setName(String name)

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

      May be a runtime expression.

      Name is not a valid attribute for form on XHTML 1.0. However, it is sometimes needed for backward compatibility.

    - #### getName

          protected String getName()
                            throws JspException

      Get the value of the '`name`' attribute.
      Overrides:
        `getName` in class `AbstractDataBoundFormElementTag`
      Returns:
        the value for the HTML '`name`' attribute
      Throws:
        `JspException`

    - #### setAction

          public void setAction(String action)

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

      May be a runtime expression.

    - #### getAction

          protected String getAction()

      Get the value of the '`action`' attribute.

    - #### setServletRelativeAction

          public void setServletRelativeAction(String servletRelativeaction)

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

      May be a runtime expression.

    - #### getServletRelativeAction

          protected String getServletRelativeAction()

      Get the value of the '`action`' attribute.

    - #### setMethod

          public void setMethod(String method)

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

      May be a runtime expression.

    - #### getMethod

          protected String getMethod()

      Get the value of the '`method`' attribute.

    - #### setTarget

          public void setTarget(String target)

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

      May be a runtime expression.

    - #### getTarget

          public String getTarget()

      Get the value of the '`target`' attribute.

    - #### setEnctype

          public void setEnctype(String enctype)

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

      May be a runtime expression.

    - #### getEnctype

          protected String getEnctype()

      Get the value of the '`enctype`' attribute.

    - #### setAcceptCharset

          public void setAcceptCharset(String acceptCharset)

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

      May be a runtime expression.

    - #### getAcceptCharset

          protected String getAcceptCharset()

      Get the value of the '`acceptCharset`' attribute.

    - #### setOnsubmit

          public void setOnsubmit(String onsubmit)

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

      May be a runtime expression.

    - #### getOnsubmit

          protected String getOnsubmit()

      Get the value of the '`onsubmit`' attribute.

    - #### setOnreset

          public void setOnreset(String onreset)

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

      May be a runtime expression.

    - #### getOnreset

          protected String getOnreset()

      Get the value of the '`onreset`' attribute.

    - #### setAutocomplete

          public void setAutocomplete(String autocomplete)

      Set the value of the '`autocomplete`' attribute. May be a runtime expression.

    - #### getAutocomplete

          protected String getAutocomplete()

      Get the value of the '`autocomplete`' attribute.

    - #### setMethodParam

          public void setMethodParam(String methodParam)

      Set the name of the request param for non-browser supported HTTP methods.

    - #### getMethodParameter

          protected String getMethodParameter()

      Get the name of the request param for non-browser supported HTTP methods.

    - #### isMethodBrowserSupported

          protected boolean isMethodBrowserSupported(String method)

      Determine if the HTTP method is supported by browsers (i.e. GET or POST).

    - #### writeTagContent

          protected int writeTagContent(TagWriter tagWriter)
                                 throws JspException

      Writes the opening part of the block '`form`' tag and exposes the form object name in the `PageContext`.
      Specified by:
        `writeTagContent` in class `AbstractFormTag`
      Parameters:
        `tagWriter` - the `TagWriter` to which the form content is to be written
      Returns:
        `Tag.EVAL_BODY_INCLUDE`
      Throws:
        `JspException`

    - #### autogenerateId

          protected String autogenerateId()
                                   throws JspException

      Autogenerated IDs correspond to the form object name.
      Overrides:
        `autogenerateId` in class `AbstractDataBoundFormElementTag`
      Throws:
        `JspException`

    - #### resolveModelAttribute

          protected String resolveModelAttribute()
                                          throws JspException

      `Resolves` and returns the name of the form object.
      Throws:
        `IllegalArgumentException` - if the form object resolves to `null`
        `JspException`

    - #### resolveAction

          protected String resolveAction()
                                  throws JspException

      Resolve the value of the '`action`' attribute.

      If the user configured an '`action`' value then the result of evaluating this value is used. If the user configured an '`servletRelativeAction`' value then the value is prepended with the context and servlet paths, and the result is used. Otherwise, the `originating URI` is used.

      Returns:
        the value that is to be used for the '`action`' attribute
      Throws:
        `JspException`

    - #### doEndTag

          public int doEndTag()
                       throws JspException

      Closes the '`form`' block tag and removes the form object name from the `PageContext`.
      Specified by:
        `doEndTag` in interface `Tag`
      Overrides:
        `doEndTag` in class `TagSupport`
      Throws:
        `JspException`

    - #### doFinally

          public void doFinally()

      Clears the stored `TagWriter`.
      Specified by:
        `doFinally` in interface `TryCatchFinally`
      Overrides:
        `doFinally` in class `AbstractDataBoundFormElementTag`

    - #### resolveCssClass

          protected String resolveCssClass()
                                    throws JspException

      Override resolve CSS class since error class is not supported.
      Overrides:
        `resolveCssClass` in class `AbstractHtmlElementTag`
      Throws:
        `JspException`

    - #### setPath

          public void setPath(String path)

      Unsupported for forms.
      Overrides:
        `setPath` in class `AbstractDataBoundFormElementTag`
      Throws:
        `UnsupportedOperationException` - always

    - #### setCssErrorClass

          public void setCssErrorClass(String cssErrorClass)

      Unsupported for forms.
      Overrides:
        `setCssErrorClass` in class `AbstractHtmlElementTag`
      Throws:
        `UnsupportedOperationException` - always