Package org.springframework.web.servlet.tags.form

# Class SelectTag

java.lang.Object
jakarta.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:
  `DynamicAttributes`, `IterationTag`, `JspTag`, `Tag`, `TryCatchFinally`, `Serializable`, `EditorAwareTag`

public class SelectTag extends AbstractHtmlInputElementTag
The `<select>` tag renders an HTML 'select' element. Supports data binding to the selected option.

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

### Attribute Summary

Attribute | Required? | Runtime Expression? | Description
--- | --- | --- | ---
accesskey | false | true | HTML Standard Attribute
cssClass | false | true | HTML Optional Attribute
cssErrorClass | false | true | HTML Optional Attribute. Used when the bound field has errors.
cssStyle | false | true | HTML Optional Attribute
dir | false | true | HTML Standard Attribute
disabled | false | true | HTML Optional Attribute. Setting the value of this attribute to 'true' will disable the HTML element.
htmlEscape | false | true | Enable/disable HTML escaping of rendered values.
id | false | true | HTML Standard Attribute
itemLabel | false | true | Name of the property mapped to the inner text of the 'option' tag
items | false | true | The Collection, Map or array of objects used to generate the inner 'option' tags
itemValue | false | true | Name of the property mapped to 'value' attribute of the 'option' tag
lang | false | true | HTML Standard Attribute
multiple | false | true | HTML Optional Attribute
onblur | false | true | HTML Event Attribute
onchange | false | true | HTML Event Attribute
onclick | false | true | HTML Event Attribute
ondblclick | false | true | HTML Event Attribute
onfocus | false | true | HTML Event Attribute
onkeydown | false | true | HTML Event Attribute
onkeypress | false | true | HTML Event Attribute
onkeyup | false | true | HTML Event Attribute
onmousedown | false | true | HTML Event Attribute
onmousemove | false | true | HTML Event Attribute
onmouseout | false | true | HTML Event Attribute
onmouseover | false | true | HTML Event Attribute
onmouseup | false | true | HTML Event Attribute
path | true | true | Path to property for data binding
size | false | true | HTML Optional Attribute
tabindex | false | true | HTML Standard Attribute
title | false | true | HTML Standard Attribute

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

## Field Summary

Fields
Modifier and Type
Field
Description
`static final 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

`NESTED_PATH_VARIABLE_NAME`

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

`logger, REQUEST_CONTEXT_PAGE_ATTRIBUTE`

### Fields inherited from class jakarta.servlet.jsp.tagext.TagSupport

`pageContext`

### Fields inherited from interface jakarta.servlet.jsp.tagext.IterationTag

`EVAL_BODY_AGAIN`

### Fields inherited from interface jakarta.servlet.jsp.tagext.Tag

`EVAL_BODY_INCLUDE, EVAL_PAGE, SKIP_BODY, SKIP_PAGE`

## Constructor Summary

Constructors
Constructor
Description
`SelectTag()`

## Method Summary

Modifier and Type
Method
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, getOnblur, getOnchange, getOnfocus, 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, getDisplayString, getDisplayString, isDefaultHtmlEscape, writeOptionalAttribute`

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

`htmlEscape, isHtmlEscape, isResponseEncodedHtmlEscape, setHtmlEscape`

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

`doCatch, doStartTag, getRequestContext`

### Methods inherited from class jakarta.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 Details

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

### SelectTag

public SelectTag()

## Method Details

### setItems

public void setItems(@Nullable 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

@Nullable 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

@Nullable 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

@Nullable 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.

### getSize

@Nullable protected String getSize()
Get the value of the '`size`' attribute.

### setMultiple

public void setMultiple(Object multiple)
Set the value of the HTML '`multiple`' attribute rendered on the final '`select`' element.

### getMultiple

@Nullable protected Object getMultiple()
Get the value of the HTML '`multiple`' attribute rendered on the final '`select`' element.

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