org.springframework.web.servlet.tags.form

## Class SelectTag

- 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.AbstractHtmlInputElementTag
              - - org.springframework.web.servlet.tags.form.SelectTag

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

      public class SelectTag
      extends AbstractHtmlInputElementTag

  Databinding-aware JSP tag that renders an HTML '`select`' element.

  Inner '`option`' tags can be rendered using one of the approaches supported by the OptionWriter class.

  Also supports the use of nested `OptionTags` or (typically one) nested `OptionsTag`.

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

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `LIST_VALUE_PAGE_ATTRIBUTE` The `PageContext` attribute under which the bound value is exposed to inner `OptionTags`.

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

      `ACCESSKEY_ATTRIBUTE, DISABLED_ATTRIBUTE, ONBLUR_ATTRIBUTE, ONCHANGE_ATTRIBUTE, ONFOCUS_ATTRIBUTE, READONLY_ATTRIBUTE`

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

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `doEndTag()` Closes any block tag that might have been opened when using nested `options`.
    `void` | `doFinally()` Clears the `TagWriter` that might have been left over when using nested `options`.
    `protected String` | `getItemLabel()` Get the value of the '`itemLabel`' attribute.
    `protected Object` | `getItems()` Get the value of the '`items`' attribute.
    `protected String` | `getItemValue()` Get the value of the '`itemValue`' attribute.
    `protected Object` | `getMultiple()` Get the value of the HTML '`multiple`' attribute rendered on the final '`select`' element.
    `protected String` | `getSize()` Get the value of the '`size`' attribute.
    `void` | `setItemLabel(String itemLabel)` Set the name of the property mapped to the label (inner text) of the '`option`' tag.
    `void` | `setItems(Object items)` Set the `Collection`, `Map` or array of objects used to generate the inner '`option`' tags.
    `void` | `setItemValue(String itemValue)` Set the name of the property mapped to the '`value`' attribute of the '`option`' tag.
    `void` | `setMultiple(Object multiple)` Set the value of the HTML '`multiple`' attribute rendered on the final '`select`' element.
    `void` | `setSize(String size)` Set the value of the HTML '`size`' attribute rendered on the final '`select`' element.
    `protected int` | `writeTagContent(TagWriter tagWriter)` Renders the HTML '`select`' tag to the supplied `TagWriter`.

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

      `getAccesskey, getDisabled, getOnblur, getOnchange, getOnfocus, getReadonly, isDisabled, isReadonly, setAccesskey, setDisabled, setOnblur, setOnchange, setOnfocus, setReadonly, writeOptionalAttributes`

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

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

    - #### LIST_VALUE_PAGE_ATTRIBUTE

          public static final String LIST_VALUE_PAGE_ATTRIBUTE

      The `PageContext` attribute under which the bound value is exposed to inner `OptionTags`.
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### SelectTag

          public SelectTag()

  - ### Method Detail

    - #### setItems

          public void setItems(Object items)

      Set the `Collection`, `Map` or array of objects used to generate the inner '`option`' tags.

      Required when wishing to render '`option`' tags from an array, `Collection` or `Map`.

      Typically a runtime expression.

      Parameters:
        `items` - the items that comprise the options of this selection

    - #### getItems

          protected Object getItems()

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

      May be a runtime expression.

    - #### setItemValue

          public void setItemValue(String itemValue)

      Set the name of the property mapped to the '`value`' attribute of the '`option`' tag.

      Required when wishing to render '`option`' tags from an array or `Collection`.

      May be a runtime expression.

    - #### getItemValue

          protected String getItemValue()

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

      May be a runtime expression.

    - #### setItemLabel

          public void setItemLabel(String itemLabel)

      Set the name of the property mapped to the label (inner text) of the '`option`' tag.

      May be a runtime expression.

    - #### getItemLabel

          protected String getItemLabel()

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

      May be a runtime expression.

    - #### setSize

          public void setSize(String size)

      Set the value of the HTML '`size`' attribute rendered on the final '`select`' element.

      May be a runtime expression.

      Parameters:
        `size` - the desired value of the '`size`' attribute

    - #### getSize

          protected String getSize()

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

      May be a runtime expression.

    - #### setMultiple

          public void setMultiple(Object multiple)

      Set the value of the HTML '`multiple`' attribute rendered on the final '`select`' element.

      May be a runtime expression.

    - #### getMultiple

          protected Object getMultiple()

      Get the value of the HTML '`multiple`' attribute rendered on the final '`select`' element.

      May be a runtime expression.

    - #### writeTagContent

          protected int writeTagContent(TagWriter tagWriter)
                                 throws JspException

      Renders the HTML '`select`' tag to the supplied `TagWriter`.

      Renders nested '`option`' tags if the `items` property is set, otherwise exposes the bound value for the nested `OptionTags`.

      Specified by:
        `writeTagContent` in class `AbstractFormTag`
      Returns:
        valid tag render instruction as per `Tag.doStartTag()`.
      Throws:
        `JspException`

    - #### doEndTag

          public int doEndTag()
                       throws JspException

      Closes any block tag that might have been opened when using nested `options`.
      Specified by:
        `doEndTag` in interface `Tag`
      Overrides:
        `doEndTag` in class `TagSupport`
      Throws:
        `JspException`

    - #### doFinally

          public void doFinally()

      Clears the `TagWriter` that might have been left over when using nested `options`.
      Specified by:
        `doFinally` in interface `TryCatchFinally`
      Overrides:
        `doFinally` in class `AbstractDataBoundFormElementTag`