org.apache.struts2.components

## Class Select

- java.lang.Object
- - org.apache.struts2.components.Component
  - - org.apache.struts2.components.UIBean
    - - org.apache.struts2.components.ListUIBean
      - - org.apache.struts2.components.Select

- Direct Known Subclasses:
    UpDownSelect

      public class Select
      extends ListUIBean

  Render an HTML input tag of type select.

  Examples

       <s:select label="Pets"
              name="petIds"
              list="petDao.pets"
              listKey="id"
              listValue="name"
              multiple="true"
              size="3"
              required="true"
              value="%{petDao.pets.{id}}"
       />

       <s:select label="Months"
              name="months"
              headerKey="-1" headerValue="Select Month"
              list="#{'01':'Jan', '02':'Feb', [...]}"
              value="selectedMonth"
              required="true"
       />

       // The month id (01, 02, ...) returned by the getSelectedMonth() call
       // against the stack will be auto-selected

  Note: For any of the tags that use lists (select probably being the most ubiquitous), which uses the OGNL list notation (see the "months" example above), it should be noted that the map key created (in the months example, the '01', '02', etc.) is typed. '1' is a char, '01' is a String, "1" is a String. This is important since if the value returned by your "value" attribute is NOT the same type as the key in the "list" attribute, they WILL NOT MATCH, even though their String values may be equivalent. If they don't match, nothing in your list will be auto-selected.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected String` | `emptyOption`
    `protected String` | `headerKey`
    `protected String` | `headerValue`
    `protected String` | `multiple`
    `protected String` | `size`
    `static String` | `TEMPLATE`

    - ### Fields inherited from class org.apache.struts2.components.ListUIBean

      `list, listCssClass, listCssStyle, listKey, listLabelKey, listTitle, listValue, listValueKey, throwExceptionOnNullValueAttribute`

    - ### Fields inherited from class org.apache.struts2.components.UIBean

      `accesskey, ATTR_FIELD_VALUE, ATTR_NAME_VALUE, ATTR_VALUE, cspNonceReader, cssClass, cssErrorClass, cssErrorStyle, cssStyle, defaultTemplateDir, defaultUITheme, disabled, dynamicAttributes, errorPosition, id, javascriptTooltip, key, label, labelPosition, labelSeparator, name, onblur, onchange, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onselect, request, requiredLabel, requiredPosition, response, tabindex, template, templateDir, templateEngineManager, templateSuffix, theme, title, tooltip, tooltipConfig, tooltipCssClass, tooltipDelay, tooltipIconPath, uiStaticContentPath, uiThemeExpansionToken, value`

    - ### Fields inherited from class org.apache.struts2.components.Component

      `actionMapper, COMPONENT_STACK, devMode, escapeHtmlBody, parameters, performClearTagStateForTagPoolingServers, stack, standardAttributesMap, throwExceptionOnELFailure`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Select(ValueStack stack, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `evaluateExtraParams()`
    `protected String` | `getDefaultTemplate()` A contract that requires each concrete UI Tag to specify which template should be used as a default.
    `void` | `setEmptyOption(String emptyOption)`
    `void` | `setHeaderKey(String headerKey)`
    `void` | `setHeaderValue(String headerValue)`
    `void` | `setMultiple(String multiple)`
    `void` | `setSize(String size)`

    - ### Methods inherited from class org.apache.struts2.components.ListUIBean

      `contains, getValueClassType, setList, setListCssClass, setListCssStyle, setListKey, setListLabelKey, setListTitle, setListValue, setListValueKey, setThrowExceptionOnNullValueAttribute`

    - ### Methods inherited from class org.apache.struts2.components.UIBean

      `addFormParameter, applyValueParameter, buildTemplateName, copyParams, enableAncestorFormCustomOnsubmit, end, ensureAttributeSafelyNotEscaped, escape, evaluateNameValue, evaluateParams, getId, getTemplate, getTemplateDir, getTheme, getTooltipConfig, lazyEvaluation, mergeTemplate, populateComponentHtmlId, setAccesskey, setCspNonceReader, setCssClass, setCssErrorClass, setCssErrorStyle, setCssStyle, setDefaultTemplateDir, setDefaultUITheme, setDisabled, setDynamicAttributes, setErrorPosition, setId, setJavascriptTooltip, setKey, setLabel, setLabelPosition, setLabelSeparator, setName, setOnblur, setOnchange, setOnclick, setOndblclick, setOnfocus, setOnkeydown, setOnkeypress, setOnkeyup, setOnmousedown, setOnmousemove, setOnmouseout, setOnmouseover, setOnmouseup, setOnselect, setRequiredLabel, setRequiredPosition, setStaticContentPath, setStyle, setTabindex, setTemplate, setTemplateDir, setTemplateEngineManager, setTheme, setTitle, setTooltip, setTooltipConfig, setTooltipCssClass, setTooltipDelay, setTooltipIconPath, setUIThemeExpansionToken, setValue`

    - ### Methods inherited from class org.apache.struts2.components.Component

      `addAllParameters, addParameter, clearStandardAttributesMap, completeExpression, determineActionURL, determineNamespace, end, escapeHtmlBody, fieldError, findAncestor, findString, findString, findValue, findValue, findValue, getAttributes, getComponentStack, getNamespace, getParameters, getPerformClearTagStateForTagPoolingServers, getStack, getStandardAttributes, isAcceptableExpression, isValidTagAttribute, popComponentStack, setActionMapper, setDevMode, setEscapeHtmlBody, setNotExcludedAcceptedPatterns, setPerformClearTagStateForTagPoolingServers, setThrowExceptionsOnELFailure, setUrlHelper, start, stripExpression, toString, usesBody`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### TEMPLATE

          public static final String TEMPLATE

      See Also:
        Constant Field Values

    - #### emptyOption

          protected String emptyOption

    - #### headerKey

          protected String headerKey

    - #### headerValue

          protected String headerValue

    - #### multiple

          protected String multiple

    - #### size

          protected String size

  - ### Constructor Detail

    - #### Select

          public Select(ValueStack stack,
                        javax.servlet.http.HttpServletRequest request,
                        javax.servlet.http.HttpServletResponse response)

  - ### Method Detail

    - #### getDefaultTemplate

          protected String getDefaultTemplate()

      Description copied from class: `UIBean`
      A contract that requires each concrete UI Tag to specify which template should be used as a default. For example, the CheckboxTab might return "checkbox.vm" while the RadioTag might return "radio.vm". This value not begin with a '/' unless you intend to make the path absolute rather than relative to the current theme.
      Specified by:
        `getDefaultTemplate` in class `UIBean`
      Returns:
        The name of the template to be used as the default.

    - #### evaluateExtraParams

          public void evaluateExtraParams()

      Overrides:
        `evaluateExtraParams` in class `ListUIBean`

    - #### setEmptyOption

          public void setEmptyOption(String emptyOption)

    - #### setHeaderKey

          public void setHeaderKey(String headerKey)

    - #### setHeaderValue

          public void setHeaderValue(String headerValue)

    - #### setMultiple

          public void setMultiple(String multiple)

    - #### setSize

          public void setSize(String size)

Copyright © 2000–2026 Apache Software Foundation. All rights reserved.