org.apache.struts2.components

## Class UIBean

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

- Direct Known Subclasses:
    ActionError, ActionMessage, Checkbox, ClosingUIBean, DateTextField, Debug, FieldError, File, GenericUIBean, Head, Hidden, Label, Link, ListUIBean, TextArea, TextField, Token

      public abstract class UIBean
      extends Component

  UIBean is the standard superclass of all Struts UI components. It defines common Struts and html properties all UI components should present for usage.

  Attribute | Theme | Data Types | Description
  templateDir | n/a | String | define the template directory
  theme | n/a | String | define the theme name
  template | n/a | String | define the template name
  themeExpansionToken | n/a | String | special token (defined with struts.ui.theme.expansion.token) used to search for template in parent theme (don't use it separately!)
  expandTheme | n/a | String | concatenation of themeExpansionToken and theme which tells internal template loader mechanism to try load template from current theme and then from parent theme (and parent theme, and so on) when used with <#include/> directive

  Attribute | Theme | Data Types | Description
  cssClass | simple | String | define html class attribute
  cssStyle | simple | String | define html style attribute
  cssErrorClass | simple | String | error class attribute
  cssErrorStyle | simple | String | error style attribute
  title | simple | String | define html title attribute
  disabled | simple | String | define html disabled attribute
  label | xhtml | String | define label of form element
  labelPosition | xhtml | String | define label position of form element (top/left), default to left
  requiredPosition | xhtml | String | define required label position of form element (left/right), default to right
  errorPosition | xhtml | String | define error position of form element (top|bottom), default to top
  name | simple | String | Form Element's field name mapping
  requiredLabel | xhtml | Boolean | add * to label (true to add false otherwise)
  tabIndex | simple | String | define html tabindex attribute
  value | simple | Object | define value of form element

  Attribute | Theme | Data Types | Description
  onclick | simple | String | html javascript onclick attribute
  ondblclick | simple | String | html javascript ondbclick attribute
  onmousedown | simple | String | html javascript onmousedown attribute
  onmouseup | simple | String | html javascript onmouseup attribute
  onmouseover | simple | String | html javascript onmouseover attribute
  onmouseout | simple | String | html javascript onmouseout attribute
  onfocus | simple | String | html javascript onfocus attribute
  onblur | simple | String | html javascript onblur attribute
  onkeypress | simple | String | html javascript onkeypress attribute
  onkeyup | simple | String | html javascript onkeyup attribute
  onkeydown | simple | String | html javascript onkeydown attribute
  onselect | simple | String | html javascript onselect attribute
  onchange | simple | String | html javascript onchange attribute

  Attribute | Data Type | Default | Description
  tooltip | String | none | Set the tooltip of this particular component
  jsTooltipEnabled | String | false | Enable js tooltip rendering
  tooltipIcon | String | /static/tooltip/tooltip.gif | The url to the tooltip icon
  tooltipDelay | String | 500 | Tooltip shows up after the specified timeout (miliseconds). A behavior similar to that of OS based tooltips.
  key | simple | String | The name of the property this input field represents. This will auto populate the name, label, and value

  tooltipConfig is deprecated, use individual tooltip configuration attributes instead

  Every Form UI component (in xhtml / css_xhtml or any other that extends them) can have tooltips assigned to them. The Form component's tooltip related attribute, once defined, will be applied to all form UI components that are created under it unless explicitly overridden by having the Form UI component itself defined with their own tooltip attribute.

  In Example 1, the textfield will inherit the tooltipDelay and tooltipIconPath attribute from its containing form. In other words, although it doesn't define a tooltipIconPath attribute, it will have that attribute inherited from its containing form.

  In Example 2, the textfield will inherit both the tooltipDelay and tooltipIconPath attribute from its containing form, but the tooltipDelay attribute is overridden at the textfield itself. Hence, the textfield actually will have its tooltipIcon defined as /myImages/myIcon.gif, inherited from its containing form, and tooltipDelay defined as 5000.

  Example 3, 4 and 5 show different ways of setting the tooltip configuration attribute.
  Example 3: Set tooltip config through the body of the param tag
  Example 4: Set tooltip config through the value attribute of the param tag
  Example 5: Set tooltip config through the tooltip attributes of the component tag

       <!-- Example 1: -->
       <s:form
                tooltipDelay="500"
                tooltipIconPath="/myImages/myIcon.gif" .... >
         ....
           <s:textfield label="Customer Name" tooltip="Enter the customer name" .... />
         ....
       </s:form>

       <!-- Example 2: -->
       <s:form
                tooltipDelay="500"
                tooltipIconPath="/myImages/myIcon.gif" .... >
         ....
           <s:textfield label="Address"
                tooltip="Enter your address"
                tooltipDelay="5000" />
         ....
       </s:form>

       <-- Example 3: -->
       <s:textfield
              label="Customer Name"
              tooltip="One of our customer Details">
              <s:param name="tooltipDelay">
                   500
              </s:param>
              <s:param name="tooltipIconPath">
                   /myImages/myIcon.gif
              </s:param>
       </s:textfield>

       <-- Example 4: -->
       <s:textfield
                label="Customer Address"
                tooltip="Enter The Customer Address" >
                <s:param
                    name="tooltipDelay"
                    value="500" />
       </s:textfield>

       <-- Example 5: -->
       <s:textfield
                label="Customer Telephone Number"
                tooltip="Enter customer Telephone Number"
                tooltipDelay="500"
                tooltipIconPath="/myImages/myIcon.gif" />

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected String` | `accesskey`
    `protected static String` | `ATTR_FIELD_VALUE`
    `protected static String` | `ATTR_NAME_VALUE`
    `protected static String` | `ATTR_VALUE`
    `protected CspNonceReader` | `cspNonceReader`
    `protected String` | `cssClass`
    `protected String` | `cssErrorClass`
    `protected String` | `cssErrorStyle`
    `protected String` | `cssStyle`
    `protected String` | `defaultTemplateDir`
    `protected String` | `defaultUITheme`
    `protected String` | `disabled`
    `protected Map<String,Object>` | `dynamicAttributes`
    `protected String` | `errorPosition`
    `protected String` | `id`
    `protected String` | `javascriptTooltip`
    `protected String` | `key`
    `protected String` | `label`
    `protected String` | `labelPosition`
    `protected String` | `labelSeparator`
    `protected String` | `name`
    `protected String` | `onblur`
    `protected String` | `onchange`
    `protected String` | `onclick`
    `protected String` | `ondblclick`
    `protected String` | `onfocus`
    `protected String` | `onkeydown`
    `protected String` | `onkeypress`
    `protected String` | `onkeyup`
    `protected String` | `onmousedown`
    `protected String` | `onmousemove`
    `protected String` | `onmouseout`
    `protected String` | `onmouseover`
    `protected String` | `onmouseup`
    `protected String` | `onselect`
    `protected javax.servlet.http.HttpServletRequest` | `request`
    `protected String` | `requiredLabel`
    `protected String` | `requiredPosition`
    `protected javax.servlet.http.HttpServletResponse` | `response`
    `protected String` | `tabindex`
    `protected String` | `template`
    `protected String` | `templateDir`
    `protected TemplateEngineManager` | `templateEngineManager`
    `protected String` | `templateSuffix`
    `protected String` | `theme`
    `protected String` | `title`
    `protected String` | `tooltip`
    `protected String` | `tooltipConfig`
    `protected String` | `tooltipCssClass`
    `protected String` | `tooltipDelay`
    `protected String` | `tooltipIconPath`
    `protected String` | `uiStaticContentPath`
    `protected String` | `uiThemeExpansionToken`
    `protected String` | `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
    `UIBean(ValueStack stack, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)`

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addFormParameter(String key, Object value)`
    `protected void` | `applyValueParameter(String translatedName)` Tries to calculate the "value" parameter based either on the provided `value` or `name`
    `protected Template` | `buildTemplateName(String myTemplate, String myDefaultTemplate)`
    `void` | `copyParams(Map<String,Object> params)` supports dynamic attributes for freemarker ui tags
    `protected void` | `enableAncestorFormCustomOnsubmit()`
    `boolean` | `end(Writer writer, String body)` Callback for the end tag of this component.
    `protected String` | `ensureAttributeSafelyNotEscaped(String val)` Ensures an unescaped attribute value cannot be vulnerable to XSS attacks
    `protected String` | `escape(String name)`
    `protected void` | `evaluateExtraParams()`
    `protected boolean` | `evaluateNameValue()`
    `void` | `evaluateParams()`
    `protected abstract String` | `getDefaultTemplate()` A contract that requires each concrete UI Tag to specify which template should be used as a default.
    `String` | `getId()` Get's the id for referencing element.
    `String` | `getTemplate()`
    `String` | `getTemplateDir()`
    `String` | `getTheme()`
    `protected Map<String,String>` | `getTooltipConfig(UIBean component)`
    `protected Class<?>` | `getValueClassType()`
    `protected boolean` | `lazyEvaluation()` Used to avoid evaluating attributes in `evaluateParams()` or `evaluateExtraParams()` as evaluation will happen in tag's template
    `protected void` | `mergeTemplate(Writer writer, Template template)`
    `protected void` | `populateComponentHtmlId(Form form)` Create HTML id element for the component and populate this component parameter map.
    `void` | `setAccesskey(String accesskey)`
    `void` | `setCspNonceReader(CspNonceReader cspNonceReader)`
    `void` | `setCssClass(String cssClass)`
    `void` | `setCssErrorClass(String cssErrorClass)`
    `void` | `setCssErrorStyle(String cssErrorStyle)`
    `void` | `setCssStyle(String cssStyle)`
    `void` | `setDefaultTemplateDir(String dir)`
    `void` | `setDefaultUITheme(String theme)`
    `void` | `setDisabled(String disabled)`
    `void` | `setDynamicAttributes(Map<String,String> tagDynamicAttributes)`
    `void` | `setErrorPosition(String errorPosition)`
    `void` | `setId(String id)`
    `void` | `setJavascriptTooltip(String javascriptTooltip)`
    `void` | `setKey(String key)`
    `void` | `setLabel(String label)`
    `void` | `setLabelPosition(String labelPosition)`
    `void` | `setLabelSeparator(String labelseparator)`
    `void` | `setName(String name)`
    `void` | `setOnblur(String onblur)`
    `void` | `setOnchange(String onchange)`
    `void` | `setOnclick(String onclick)`
    `void` | `setOndblclick(String ondblclick)`
    `void` | `setOnfocus(String onfocus)`
    `void` | `setOnkeydown(String onkeydown)`
    `void` | `setOnkeypress(String onkeypress)`
    `void` | `setOnkeyup(String onkeyup)`
    `void` | `setOnmousedown(String onmousedown)`
    `void` | `setOnmousemove(String onmousemove)`
    `void` | `setOnmouseout(String onmouseout)`
    `void` | `setOnmouseover(String onmouseover)`
    `void` | `setOnmouseup(String onmouseup)`
    `void` | `setOnselect(String onselect)`
    `void` | `setRequiredLabel(String requiredLabel)`
    `void` | `setRequiredPosition(String requiredPosition)`
    `void` | `setStaticContentPath(String uiStaticContentPath)`
    `void` | `setStyle(String cssStyle)`
    `void` | `setTabindex(String tabindex)`
    `void` | `setTemplate(String template)`
    `void` | `setTemplateDir(String templateDir)`
    `void` | `setTemplateEngineManager(TemplateEngineManager mgr)`
    `void` | `setTheme(String theme)`
    `void` | `setTitle(String title)`
    `void` | `setTooltip(String tooltip)`
    `void` | `setTooltipConfig(String tooltipConfig)`
    `void` | `setTooltipCssClass(String tooltipCssClass)`
    `void` | `setTooltipDelay(String tooltipDelay)`
    `void` | `setTooltipIconPath(String tooltipIconPath)`
    `void` | `setUIThemeExpansionToken(String uiThemeExpansionToken)`
    `void` | `setValue(String value)`

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

    - #### ATTR_FIELD_VALUE

          protected static final String ATTR_FIELD_VALUE

      See Also:
        Constant Field Values

    - #### ATTR_NAME_VALUE

          protected static final String ATTR_NAME_VALUE

      See Also:
        Constant Field Values

    - #### ATTR_VALUE

          protected static final String ATTR_VALUE

      See Also:
        Constant Field Values

    - #### request

          protected javax.servlet.http.HttpServletRequest request

    - #### response

          protected javax.servlet.http.HttpServletResponse response

    - #### templateSuffix

          protected String templateSuffix

    - #### template

          protected String template

    - #### templateDir

          protected String templateDir

    - #### theme

          protected String theme

    - #### key

          protected String key

    - #### id

          protected String id

    - #### cssClass

          protected String cssClass

    - #### cssStyle

          protected String cssStyle

    - #### cssErrorClass

          protected String cssErrorClass

    - #### cssErrorStyle

          protected String cssErrorStyle

    - #### disabled

          protected String disabled

    - #### label

          protected String label

    - #### labelPosition

          protected String labelPosition

    - #### labelSeparator

          protected String labelSeparator

    - #### requiredPosition

          protected String requiredPosition

    - #### errorPosition

          protected String errorPosition

    - #### name

          protected String name

    - #### requiredLabel

          protected String requiredLabel

    - #### tabindex

          protected String tabindex

    - #### value

          protected String value

    - #### title

          protected String title

    - #### onclick

          protected String onclick

    - #### ondblclick

          protected String ondblclick

    - #### onmousedown

          protected String onmousedown

    - #### onmouseup

          protected String onmouseup

    - #### onmouseover

          protected String onmouseover

    - #### onmousemove

          protected String onmousemove

    - #### onmouseout

          protected String onmouseout

    - #### onfocus

          protected String onfocus

    - #### onblur

          protected String onblur

    - #### onkeypress

          protected String onkeypress

    - #### onkeydown

          protected String onkeydown

    - #### onkeyup

          protected String onkeyup

    - #### onselect

          protected String onselect

    - #### onchange

          protected String onchange

    - #### accesskey

          protected String accesskey

    - #### tooltip

          protected String tooltip

    - #### tooltipConfig

          protected String tooltipConfig

    - #### javascriptTooltip

          protected String javascriptTooltip

    - #### tooltipDelay

          protected String tooltipDelay

    - #### tooltipCssClass

          protected String tooltipCssClass

    - #### tooltipIconPath

          protected String tooltipIconPath

    - #### dynamicAttributes

          protected Map<String,Object> dynamicAttributes

    - #### defaultTemplateDir

          protected String defaultTemplateDir

    - #### defaultUITheme

          protected String defaultUITheme

    - #### uiThemeExpansionToken

          protected String uiThemeExpansionToken

    - #### uiStaticContentPath

          protected String uiStaticContentPath

    - #### templateEngineManager

          protected TemplateEngineManager templateEngineManager

    - #### cspNonceReader

          protected CspNonceReader cspNonceReader

  - ### Constructor Detail

    - #### UIBean

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

  - ### Method Detail

    - #### setDefaultTemplateDir

          public void setDefaultTemplateDir(String dir)

    - #### setDefaultUITheme

          public void setDefaultUITheme(String theme)

    - #### setUIThemeExpansionToken

          public void setUIThemeExpansionToken(String uiThemeExpansionToken)

    - #### setStaticContentPath

          public void setStaticContentPath(String uiStaticContentPath)

    - #### setTemplateEngineManager

          public void setTemplateEngineManager(TemplateEngineManager mgr)

    - #### setCspNonceReader

          public void setCspNonceReader(CspNonceReader cspNonceReader)

    - #### end

          public boolean end(Writer writer,
                             String body)

      Description copied from class: `Component`
      Callback for the end tag of this component. Should the body be evaluated again?
      NOTE: will pop component stack.
      Overrides:
        `end` in class `Component`
      Parameters:
        `writer` - the output writer.
        `body` - the rendered body.
      Returns:
        true if the body should be evaluated again

    - #### getDefaultTemplate

          protected abstract String getDefaultTemplate()

      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.
      Returns:
        The name of the template to be used as the default.

    - #### buildTemplateName

          protected Template buildTemplateName(String myTemplate,
                                               String myDefaultTemplate)

    - #### mergeTemplate

          protected void mergeTemplate(Writer writer,
                                       Template template)
                                throws Exception

      Throws:
        `Exception`

    - #### getTemplateDir

          public String getTemplateDir()

    - #### getTheme

          public String getTheme()

    - #### evaluateParams

          public void evaluateParams()

    - #### applyValueParameter

          protected void applyValueParameter(String translatedName)

      Tries to calculate the "value" parameter based either on the provided `value` or `name`
      Parameters:
        `translatedName` - the already evaluated `name`

    - #### escape

          protected String escape(String name)

    - #### ensureAttributeSafelyNotEscaped

          protected String ensureAttributeSafelyNotEscaped(String val)

      Ensures an unescaped attribute value cannot be vulnerable to XSS attacks
      Parameters:
        `val` - The value to check
      Returns:
        The escaped value

    - #### evaluateExtraParams

          protected void evaluateExtraParams()

    - #### evaluateNameValue

          protected boolean evaluateNameValue()

    - #### getValueClassType

          protected Class<?> getValueClassType()

    - #### addFormParameter

          public void addFormParameter(String key,
                                       Object value)

    - #### enableAncestorFormCustomOnsubmit

          protected void enableAncestorFormCustomOnsubmit()

    - #### getTooltipConfig

          protected Map<String,String> getTooltipConfig(UIBean component)

    - #### populateComponentHtmlId

          protected void populateComponentHtmlId(Form form)

      Create HTML id element for the component and populate this component parameter map. Additionally, a parameter named escapedId is populated which contains the found id value filtered by `escape(String)`, needed eg. for naming Javascript identifiers based on the id value. The order is as follows :-
      1. This component id attribute
      2. [containing_form_id]_[this_component_name]
      3. [this_component_name]
      Parameters:
        `form` - enclosing form tag

    - #### getId

          public String getId()

      Get's the id for referencing element.
      Returns:
        the id for referencing element.

    - #### setId

          public void setId(String id)

    - #### setTemplateDir

          public void setTemplateDir(String templateDir)

    - #### setTheme

          public void setTheme(String theme)

    - #### getTemplate

          public String getTemplate()

    - #### setTemplate

          public void setTemplate(String template)

    - #### setCssClass

          public void setCssClass(String cssClass)

    - #### setCssStyle

          public void setCssStyle(String cssStyle)

    - #### setStyle

          public void setStyle(String cssStyle)

    - #### setCssErrorClass

          public void setCssErrorClass(String cssErrorClass)

    - #### setCssErrorStyle

          public void setCssErrorStyle(String cssErrorStyle)

    - #### setTitle

          public void setTitle(String title)

    - #### setDisabled

          public void setDisabled(String disabled)

    - #### setLabel

          public void setLabel(String label)

    - #### setLabelSeparator

          public void setLabelSeparator(String labelseparator)

    - #### setLabelPosition

          public void setLabelPosition(String labelPosition)

    - #### setRequiredPosition

          public void setRequiredPosition(String requiredPosition)

    - #### setErrorPosition

          public void setErrorPosition(String errorPosition)

    - #### setName

          public void setName(String name)

    - #### setRequiredLabel

          public void setRequiredLabel(String requiredLabel)

    - #### setTabindex

          public void setTabindex(String tabindex)

    - #### setValue

          public void setValue(String value)

    - #### setOnclick

          public void setOnclick(String onclick)

    - #### setOndblclick

          public void setOndblclick(String ondblclick)

    - #### setOnmousedown

          public void setOnmousedown(String onmousedown)

    - #### setOnmouseup

          public void setOnmouseup(String onmouseup)

    - #### setOnmouseover

          public void setOnmouseover(String onmouseover)

    - #### setOnmousemove

          public void setOnmousemove(String onmousemove)

    - #### setOnmouseout

          public void setOnmouseout(String onmouseout)

    - #### setOnfocus

          public void setOnfocus(String onfocus)

    - #### setOnblur

          public void setOnblur(String onblur)

    - #### setOnkeypress

          public void setOnkeypress(String onkeypress)

    - #### setOnkeydown

          public void setOnkeydown(String onkeydown)

    - #### setOnkeyup

          public void setOnkeyup(String onkeyup)

    - #### setOnselect

          public void setOnselect(String onselect)

    - #### setOnchange

          public void setOnchange(String onchange)

    - #### setAccesskey

          public void setAccesskey(String accesskey)

    - #### setTooltip

          public void setTooltip(String tooltip)

    - #### setTooltipConfig

          public void setTooltipConfig(String tooltipConfig)

    - #### setKey

          public void setKey(String key)

    - #### setJavascriptTooltip

          public void setJavascriptTooltip(String javascriptTooltip)

    - #### setTooltipCssClass

          public void setTooltipCssClass(String tooltipCssClass)

    - #### setTooltipDelay

          public void setTooltipDelay(String tooltipDelay)

    - #### setTooltipIconPath

          public void setTooltipIconPath(String tooltipIconPath)

    - #### setDynamicAttributes

          public void setDynamicAttributes(Map<String,String> tagDynamicAttributes)

    - #### copyParams

          public void copyParams(Map<String,Object> params)

      supports dynamic attributes for freemarker ui tags
      Overrides:
        `copyParams` in class `Component`
      Parameters:
        `params` - the parameters to copy.
      See Also:
        WW-3174, WW-4166

    - #### lazyEvaluation

          protected boolean lazyEvaluation()

      Used to avoid evaluating attributes in `evaluateParams()` or `evaluateExtraParams()` as evaluation will happen in tag's template
      Returns:
        boolean false if evaluation should be performed in ftl

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