Package 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
  Description
  `protected String`
  `accesskey`
  `protected static final String`
  `ATTR_FIELD_VALUE`
  `protected static final String`
  `ATTR_NAME_VALUE`
  `protected static final String`
  `ATTR_VALUE`
  `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 jakarta.servlet.http.HttpServletRequest`
  `request`
  `protected String`
  `requiredLabel`
  `protected String`
  `requiredPosition`
  `protected jakarta.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, attributes, COMPONENT_STACK, devMode, escapeHtmlBody, performClearTagStateForTagPoolingServers, stack, standardAttributesMap, throwExceptionOnELFailure`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `UIBean(ValueStack stack, jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response)`

- ## Method Summary

  Modifier and Type
  Method
  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`
  `copyAttributes(Map<String,Object> attributesToCopy)`
  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`
  `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

  `addAllAttributes, addParameter, completeExpression, determineActionURL, determineNamespace, end, escapeHtmlBody, fieldError, findAncestor, findString, findString, findValue, findValue, findValue, getAttributes, getComponentStack, getNamespace, 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 Details

  - ### 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 jakarta.servlet.http.HttpServletRequest request

  - ### response

    protected jakarta.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

- ## Constructor Details

  - ### UIBean

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

- ## Method Details

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

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

  - ### copyAttributes

    public void copyAttributes(Map<String,Object> attributesToCopy)
    supports dynamic attributes for freemarker ui tags
    Overrides:
      `copyAttributes` in class `Component`
    Parameters:
      `attributesToCopy` - the attributes 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