org.apache.struts2.views.jsp.ui

## Class AbstractDoubleListTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - javax.servlet.jsp.tagext.BodyTagSupport
    - - org.apache.struts2.views.jsp.StrutsBodyTagSupport
      - - org.apache.struts2.views.jsp.ComponentTagSupport
        - - org.apache.struts2.views.jsp.ui.AbstractUITag
          - - org.apache.struts2.views.jsp.ui.AbstractListTag
            - - org.apache.struts2.views.jsp.ui.AbstractRequiredListTag
              - - org.apache.struts2.views.jsp.ui.AbstractDoubleListTag

- All Implemented Interfaces:
    Serializable, javax.servlet.jsp.tagext.BodyTag, javax.servlet.jsp.tagext.DynamicAttributes, javax.servlet.jsp.tagext.IterationTag, javax.servlet.jsp.tagext.JspTag, javax.servlet.jsp.tagext.Tag
  Direct Known Subclasses:
    DoubleSelectTag, OptionTransferSelectTag

      public abstract class AbstractDoubleListTag
      extends AbstractRequiredListTag

  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected String` | `doubleAccesskey`
    `protected String` | `doubleCssClass`
    `protected String` | `doubleCssStyle`
    `protected String` | `doubleDisabled`
    `protected String` | `doubleEmptyOption`
    `protected String` | `doubleHeaderKey`
    `protected String` | `doubleHeaderValue`
    `protected String` | `doubleId`
    `protected String` | `doubleList`
    `protected String` | `doubleListCssClass`
    `protected String` | `doubleListCssStyle`
    `protected String` | `doubleListKey`
    `protected String` | `doubleListTitle`
    `protected String` | `doubleListValue`
    `protected String` | `doubleMultiple`
    `protected String` | `doubleName`
    `protected String` | `doubleOnblur`
    `protected String` | `doubleOnchange`
    `protected String` | `doubleOnclick`
    `protected String` | `doubleOndblclick`
    `protected String` | `doubleOnfocus`
    `protected String` | `doubleOnkeydown`
    `protected String` | `doubleOnkeypress`
    `protected String` | `doubleOnkeyup`
    `protected String` | `doubleOnmousedown`
    `protected String` | `doubleOnmousemove`
    `protected String` | `doubleOnmouseout`
    `protected String` | `doubleOnmouseover`
    `protected String` | `doubleOnmouseup`
    `protected String` | `doubleOnselect`
    `protected String` | `doubleSize`
    `protected String` | `doubleValue`
    `protected String` | `emptyOption`
    `protected String` | `formName`
    `protected String` | `headerKey`
    `protected String` | `headerValue`
    `protected String` | `multiple`
    `protected String` | `size`

    - ### Fields inherited from class org.apache.struts2.views.jsp.ui.AbstractListTag

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

    - ### Fields inherited from class org.apache.struts2.views.jsp.ui.AbstractUITag

      `accesskey, cssClass, cssErrorClass, cssErrorStyle, cssStyle, disabled, dynamicAttributes, errorPosition, id, javascriptTooltip, key, label, labelPosition, labelSeparator, name, onblur, onchange, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onselect, requiredLabel, requiredPosition, tabindex, template, templateDir, theme, title, tooltip, tooltipConfig, tooltipCssClass, tooltipDelay, tooltipIconPath, value`

    - ### Fields inherited from class org.apache.struts2.views.jsp.ComponentTagSupport

      `component`

    - ### Fields inherited from class javax.servlet.jsp.tagext.BodyTagSupport

      `bodyContent`

    - ### Fields inherited from class javax.servlet.jsp.tagext.TagSupport

      `pageContext`

    - ### Fields inherited from interface javax.servlet.jsp.tagext.BodyTag

      `EVAL_BODY_BUFFERED, EVAL_BODY_TAG`

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `clearTagStateForTagPoolingServers()` Provide a mechanism to clear tag state, to handle servlet container JSP tag pooling behaviour with some servers, such as Glassfish.
    `String` | `getDoubleCssClass()`
    `String` | `getDoubleCssStyle()`
    `String` | `getDoubleDisabled()`
    `String` | `getDoubleEmptyOption()`
    `String` | `getDoubleHeaderKey()`
    `String` | `getDoubleHeaderValue()`
    `String` | `getDoubleId()`
    `String` | `getDoubleList()`
    `String` | `getDoubleListKey()`
    `String` | `getDoubleListValue()`
    `String` | `getDoubleMultiple()`
    `String` | `getDoubleName()`
    `String` | `getDoubleOnblur()`
    `String` | `getDoubleOnchange()`
    `String` | `getDoubleOnclick()`
    `String` | `getDoubleOndblclick()`
    `String` | `getDoubleOnfocus()`
    `String` | `getDoubleOnkeydown()`
    `String` | `getDoubleOnkeypress()`
    `String` | `getDoubleOnkeyup()`
    `String` | `getDoubleOnmousedown()`
    `String` | `getDoubleOnmousemove()`
    `String` | `getDoubleOnmouseout()`
    `String` | `getDoubleOnmouseover()`
    `String` | `getDoubleOnmouseup()`
    `String` | `getDoubleOnselect()`
    `String` | `getDoubleSize()`
    `String` | `getDoubleValue()`
    `String` | `getFormName()`
    `protected void` | `populateParams()` Define method to populate component state based on the Tag parameters.
    `void` | `setDoubleAccesskey(String doubleAccesskey)`
    `void` | `setDoubleCssClass(String doubleCssClass)`
    `void` | `setDoubleCssStyle(String doubleCssStyle)`
    `void` | `setDoubleDisabled(String doubleDisabled)`
    `void` | `setDoubleEmptyOption(String doubleEmptyOption)`
    `void` | `setDoubleHeaderKey(String doubleHeaderKey)`
    `void` | `setDoubleHeaderValue(String doubleHeaderValue)`
    `void` | `setDoubleId(String doubleId)`
    `void` | `setDoubleList(String list)`
    `void` | `setDoubleListCssClass(String doubleListCssClass)`
    `void` | `setDoubleListCssStyle(String doubleListCssStyle)`
    `void` | `setDoubleListKey(String listKey)`
    `void` | `setDoubleListTitle(String doubleListTitle)`
    `void` | `setDoubleListValue(String listValue)`
    `void` | `setDoubleMultiple(String doubleMultiple)`
    `void` | `setDoubleName(String aName)`
    `void` | `setDoubleOnblur(String doubleOnblur)`
    `void` | `setDoubleOnchange(String doubleOnchange)`
    `void` | `setDoubleOnclick(String doubleOnclick)`
    `void` | `setDoubleOndblclick(String doubleOndblclick)`
    `void` | `setDoubleOnfocus(String doubleOnfocus)`
    `void` | `setDoubleOnkeydown(String doubleOnkeydown)`
    `void` | `setDoubleOnkeypress(String doubleOnkeypress)`
    `void` | `setDoubleOnkeyup(String doubleOnkeyup)`
    `void` | `setDoubleOnmousedown(String doubleOnmousedown)`
    `void` | `setDoubleOnmousemove(String doubleOnmousemove)`
    `void` | `setDoubleOnmouseout(String doubleOnmouseout)`
    `void` | `setDoubleOnmouseover(String doubleOnmouseover)`
    `void` | `setDoubleOnmouseup(String doubleOnmouseup)`
    `void` | `setDoubleOnselect(String doubleOnselect)`
    `void` | `setDoubleSize(String doubleSize)`
    `void` | `setDoubleValue(String doubleValue)`
    `void` | `setEmptyOption(String emptyOption)`
    `void` | `setFormName(String formName)`
    `void` | `setHeaderKey(String headerKey)`
    `void` | `setHeaderValue(String headerValue)`
    `void` | `setMultiple(String multiple)`
    `void` | `setPerformClearTagStateForTagPoolingServers(boolean performClearTagStateForTagPoolingServers)` Request that the tag state be cleared during `StrutsBodyTagSupport.doEndTag()` processing, which may help with certain edge cases with tag logic running on servers that implement JSP Tag Pooling.
    `void` | `setSize(String size)`

    - ### Methods inherited from class org.apache.struts2.views.jsp.ui.AbstractListTag

      `setList, setListCssClass, setListCssStyle, setListKey, setListLabelKey, setListTitle, setListValue, setListValueKey`

    - ### Methods inherited from class org.apache.struts2.views.jsp.ui.AbstractUITag

      `setAccesskey, setClass, setCssClass, setCssErrorClass, setCssErrorStyle, setCssStyle, setDisabled, setDynamicAttribute, setErrorPosition, setId, setJavascriptTooltip, setKey, setLabel, setLabelPosition, setLabelSeparator, setName, setOnblur, setOnchange, setOnclick, setOndblclick, setOnfocus, setOnkeydown, setOnkeypress, setOnkeyup, setOnmousedown, setOnmousemove, setOnmouseout, setOnmouseover, setOnmouseup, setOnselect, setRequiredLabel, setRequiredPosition, setStyle, setTabindex, setTemplate, setTemplateDir, setTheme, setTitle, setTooltip, setTooltipConfig, setTooltipCssClass, setTooltipDelay, setTooltipIconPath, setValue`

    - ### Methods inherited from class org.apache.struts2.views.jsp.ComponentTagSupport

      `doEndTag, doStartTag, getBean, getComponent, populatePerformClearTagStateForTagPoolingServersParam`

    - ### Methods inherited from class org.apache.struts2.views.jsp.StrutsBodyTagSupport

      `findString, findValue, findValue, getBody, getPerformClearTagStateForTagPoolingServers, getStack, release, toString`

    - ### Methods inherited from class javax.servlet.jsp.tagext.BodyTagSupport

      `doAfterBody, doInitBody, getBodyContent, getPreviousOut, setBodyContent`

    - ### Methods inherited from class javax.servlet.jsp.tagext.TagSupport

      `findAncestorWithClass, getId, getParent, getValue, getValues, removeValue, setPageContext, setParent, setValue`

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

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

    - ### Methods inherited from interface javax.servlet.jsp.tagext.Tag

      `getParent, setPageContext, setParent`

- - ### Field Detail

    - #### doubleList

          protected String doubleList

    - #### doubleListKey

          protected String doubleListKey

    - #### doubleListValue

          protected String doubleListValue

    - #### doubleListCssClass

          protected String doubleListCssClass

    - #### doubleListCssStyle

          protected String doubleListCssStyle

    - #### doubleListTitle

          protected String doubleListTitle

    - #### doubleName

          protected String doubleName

    - #### doubleValue

          protected String doubleValue

    - #### formName

          protected String formName

    - #### emptyOption

          protected String emptyOption

    - #### headerKey

          protected String headerKey

    - #### headerValue

          protected String headerValue

    - #### multiple

          protected String multiple

    - #### size

          protected String size

    - #### doubleId

          protected String doubleId

    - #### doubleDisabled

          protected String doubleDisabled

    - #### doubleMultiple

          protected String doubleMultiple

    - #### doubleSize

          protected String doubleSize

    - #### doubleHeaderKey

          protected String doubleHeaderKey

    - #### doubleHeaderValue

          protected String doubleHeaderValue

    - #### doubleEmptyOption

          protected String doubleEmptyOption

    - #### doubleCssClass

          protected String doubleCssClass

    - #### doubleCssStyle

          protected String doubleCssStyle

    - #### doubleOnclick

          protected String doubleOnclick

    - #### doubleOndblclick

          protected String doubleOndblclick

    - #### doubleOnmousedown

          protected String doubleOnmousedown

    - #### doubleOnmouseup

          protected String doubleOnmouseup

    - #### doubleOnmouseover

          protected String doubleOnmouseover

    - #### doubleOnmousemove

          protected String doubleOnmousemove

    - #### doubleOnmouseout

          protected String doubleOnmouseout

    - #### doubleOnfocus

          protected String doubleOnfocus

    - #### doubleOnblur

          protected String doubleOnblur

    - #### doubleOnkeypress

          protected String doubleOnkeypress

    - #### doubleOnkeydown

          protected String doubleOnkeydown

    - #### doubleOnkeyup

          protected String doubleOnkeyup

    - #### doubleOnselect

          protected String doubleOnselect

    - #### doubleOnchange

          protected String doubleOnchange

    - #### doubleAccesskey

          protected String doubleAccesskey

  - ### Constructor Detail

    - #### AbstractDoubleListTag

          public AbstractDoubleListTag()

  - ### Method Detail

    - #### populateParams

          protected void populateParams()

      Description copied from class: `ComponentTagSupport`
      Define method to populate component state based on the Tag parameters.

      Descendants should override this method for custom behaviour, but should always call the ancestor method when doing so.

      Overrides:
        `populateParams` in class `AbstractRequiredListTag`

    - #### setDoubleList

          public void setDoubleList(String list)

    - #### setDoubleListKey

          public void setDoubleListKey(String listKey)

    - #### setDoubleListValue

          public void setDoubleListValue(String listValue)

    - #### setDoubleListCssClass

          public void setDoubleListCssClass(String doubleListCssClass)

    - #### setDoubleListCssStyle

          public void setDoubleListCssStyle(String doubleListCssStyle)

    - #### setDoubleListTitle

          public void setDoubleListTitle(String doubleListTitle)

    - #### setDoubleName

          public void setDoubleName(String aName)

    - #### setDoubleValue

          public void setDoubleValue(String doubleValue)

    - #### setFormName

          public void setFormName(String formName)

    - #### getDoubleCssClass

          public String getDoubleCssClass()

    - #### setDoubleCssClass

          public void setDoubleCssClass(String doubleCssClass)

    - #### getDoubleCssStyle

          public String getDoubleCssStyle()

    - #### setDoubleCssStyle

          public void setDoubleCssStyle(String doubleCssStyle)

    - #### getDoubleDisabled

          public String getDoubleDisabled()

    - #### setDoubleDisabled

          public void setDoubleDisabled(String doubleDisabled)

    - #### getDoubleEmptyOption

          public String getDoubleEmptyOption()

    - #### setDoubleEmptyOption

          public void setDoubleEmptyOption(String doubleEmptyOption)

    - #### getDoubleHeaderKey

          public String getDoubleHeaderKey()

    - #### setDoubleHeaderKey

          public void setDoubleHeaderKey(String doubleHeaderKey)

    - #### getDoubleHeaderValue

          public String getDoubleHeaderValue()

    - #### setDoubleHeaderValue

          public void setDoubleHeaderValue(String doubleHeaderValue)

    - #### getDoubleId

          public String getDoubleId()

    - #### setDoubleId

          public void setDoubleId(String doubleId)

    - #### getDoubleMultiple

          public String getDoubleMultiple()

    - #### setDoubleMultiple

          public void setDoubleMultiple(String doubleMultiple)

    - #### getDoubleOnblur

          public String getDoubleOnblur()

    - #### setDoubleOnblur

          public void setDoubleOnblur(String doubleOnblur)

    - #### getDoubleOnchange

          public String getDoubleOnchange()

    - #### setDoubleOnchange

          public void setDoubleOnchange(String doubleOnchange)

    - #### getDoubleOnclick

          public String getDoubleOnclick()

    - #### setDoubleOnclick

          public void setDoubleOnclick(String doubleOnclick)

    - #### getDoubleOndblclick

          public String getDoubleOndblclick()

    - #### setDoubleOndblclick

          public void setDoubleOndblclick(String doubleOndblclick)

    - #### getDoubleOnfocus

          public String getDoubleOnfocus()

    - #### setDoubleOnfocus

          public void setDoubleOnfocus(String doubleOnfocus)

    - #### getDoubleOnkeydown

          public String getDoubleOnkeydown()

    - #### setDoubleOnkeydown

          public void setDoubleOnkeydown(String doubleOnkeydown)

    - #### getDoubleOnkeypress

          public String getDoubleOnkeypress()

    - #### setDoubleOnkeypress

          public void setDoubleOnkeypress(String doubleOnkeypress)

    - #### getDoubleOnkeyup

          public String getDoubleOnkeyup()

    - #### setDoubleOnkeyup

          public void setDoubleOnkeyup(String doubleOnkeyup)

    - #### getDoubleOnmousedown

          public String getDoubleOnmousedown()

    - #### setDoubleOnmousedown

          public void setDoubleOnmousedown(String doubleOnmousedown)

    - #### getDoubleOnmousemove

          public String getDoubleOnmousemove()

    - #### setDoubleOnmousemove

          public void setDoubleOnmousemove(String doubleOnmousemove)

    - #### getDoubleOnmouseout

          public String getDoubleOnmouseout()

    - #### setDoubleOnmouseout

          public void setDoubleOnmouseout(String doubleOnmouseout)

    - #### getDoubleOnmouseover

          public String getDoubleOnmouseover()

    - #### setDoubleOnmouseover

          public void setDoubleOnmouseover(String doubleOnmouseover)

    - #### getDoubleOnmouseup

          public String getDoubleOnmouseup()

    - #### setDoubleOnmouseup

          public void setDoubleOnmouseup(String doubleOnmouseup)

    - #### getDoubleOnselect

          public String getDoubleOnselect()

    - #### setDoubleOnselect

          public void setDoubleOnselect(String doubleOnselect)

    - #### getDoubleSize

          public String getDoubleSize()

    - #### setDoubleSize

          public void setDoubleSize(String doubleSize)

    - #### getDoubleList

          public String getDoubleList()

    - #### getDoubleListKey

          public String getDoubleListKey()

    - #### getDoubleListValue

          public String getDoubleListValue()

    - #### getDoubleName

          public String getDoubleName()

    - #### getDoubleValue

          public String getDoubleValue()

    - #### getFormName

          public String getFormName()

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

    - #### setDoubleAccesskey

          public void setDoubleAccesskey(String doubleAccesskey)

    - #### setPerformClearTagStateForTagPoolingServers

          public void setPerformClearTagStateForTagPoolingServers(boolean performClearTagStateForTagPoolingServers)

      Description copied from class: `StrutsBodyTagSupport`
      Request that the tag state be cleared during `StrutsBodyTagSupport.doEndTag()` processing, which may help with certain edge cases with tag logic running on servers that implement JSP Tag Pooling. Note: Even though the Tag classes extend this class `StrutsBodyTagSupport`, and this method `StrutsBodyTagSupport.setPerformClearTagStateForTagPoolingServers(boolean)` exists in the method hierarchy, the JSP processing requires us to explicitly override it in every Tag class in order for the Tag handler method to be visible to the JSP processing. Defining a setter in the superclass alone is insufficient (results in "Cannot find a setter method for the attribute").

      See `StrutsBodyTagSupport.clearTagStateForTagPoolingServers()` for additional details. Warning: Setting this value to true may allow for the desired behaviour, but doing so may violate the JSP specification. Set to true at your own risk.

      Overrides:
        `setPerformClearTagStateForTagPoolingServers` in class `AbstractRequiredListTag`
      Parameters:
        `performClearTagStateForTagPoolingServers` - true if tag state should be cleared, false otherwise.

    - #### clearTagStateForTagPoolingServers

          protected void clearTagStateForTagPoolingServers()

      Description copied from class: `StrutsBodyTagSupport`
      Provide a mechanism to clear tag state, to handle servlet container JSP tag pooling behaviour with some servers, such as Glassfish.

      Usage: Override this method in descendant classes to clear any state that might cause issues should the servlet container re-use a cached instance of the tag object. If the descendant class does not declare any new field members then it should not be strictly necessary to call this method there. Typically that means calling the ancestor's `ComponentTagSupport.clearTagStateForTagPoolingServers()` method first, then resetting instance variables at the current level to their default state.

      Note: If the descendant overrides `StrutsBodyTagSupport.doEndTag()`, and does not call super.doEndTag(), then the descendant should call this method in the descendant doEndTag() method to ensure consistent clearing of tag state.

      Overrides:
        `clearTagStateForTagPoolingServers` in class `AbstractListTag`

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