Package org.apache.struts2

# Class ActionSupport

java.lang.Object
org.apache.struts2.ActionSupport

All Implemented Interfaces:
  `Serializable`, `Action`, `ValidationAware`, `LocaleProvider`, `TextProvider`, `Validateable`

Direct Known Subclasses:
  `CspReportAction`, `DefaultActionSupport`

public class ActionSupport extends Object implements Action, Validateable, ValidationAware, TextProvider, LocaleProvider, Serializable
Provides a default implementation for the most common actions. See the documentation for all the interfaces this class implements for more detailed information.

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected Container`
  `container`

  ### Fields inherited from interface org.apache.struts2.action.Action

  `ERROR, INPUT, LOGIN, NONE, SUCCESS`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ActionSupport()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addActionError(String anErrorMessage)`
  Add an Action-level error message to this Action.
  `void`
  `addActionMessage(String aMessage)`
  Add an Action-level message to this Action.
  `void`
  `addFieldError(String fieldName, String errorMessage)`
  Add an error message for a given field.
  `void`
  `clearActionErrors()`
  Clears action errors.
  `void`
  `clearErrors()`
  Clears all errors.
  `void`
  `clearErrorsAndMessages()`
  Clears all errors and messages.
  `void`
  `clearFieldErrors()`
  Clears field errors.
  `void`
  `clearMessages()`
  Clears messages.
  `Object`
  `clone()`
  `String`
  `execute()`
  A default implementation that does nothing an returns "success".
  `Collection<String>`
  `getActionErrors()`
  Get the Collection of Action-level error messages for this action.
  `Collection<String>`
  `getActionMessages()`
  Get the Collection of Action-level messages for this action.
  `protected Container`
  `getContainer()`
  TODO: This a temporary solution, maybe we should consider stop injecting container into beans
  `Map<String,List<String>>`
  `getFieldErrors()`
  Get the field specific errors associated with this action.
  `String`
  `getFormatted(String key, String expr)`
  Dedicated method to support I10N and conversion errors
  `Locale`
  `getLocale()`
  Gets the provided locale.
  `protected LocaleProvider`
  `getLocaleProvider()`
  `String`
  `getText(String aTextName)`
  Gets a message based on a message key or if no message is found the provided key is returned.
  `String`
  `getText(String aTextName, String defaultValue)`
  Gets a message based on a key, or, if the message is not found, a supplied default value is returned.
  `String`
  `getText(String key, String[] args)`
  Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or the provided key if no message is found.
  `String`
  `getText(String aTextName, String defaultValue, String obj)`
  Gets a message based on a key using the supplied obj, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned.
  `String`
  `getText(String key, String defaultValue, String[] args)`
  Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned.
  `String`
  `getText(String key, String defaultValue, String[] args, ValueStack stack)`
  Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned.
  `String`
  `getText(String aTextName, String defaultValue, List<?> args)`
  Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned.
  `String`
  `getText(String key, String defaultValue, List<?> args, ValueStack stack)`
  Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned.
  `String`
  `getText(String aTextName, List<?> args)`
  Gets a message based on a key using the supplied args, as defined in `MessageFormat` or the provided key if no message is found.
  `protected TextProvider`
  `getTextProvider()`
  If called first time it will create `TextProviderFactory`, inject dependency (if `Container` is accesible) into in, then will create new `TextProvider` and store it in a field for future references and at the returns reference to that field
  `ResourceBundle`
  `getTexts()`
  Get the resource bundle associated with the implementing class (usually an action).
  `ResourceBundle`
  `getTexts(String aBundleName)`
  Get the named bundle, such as "com/acme/Foo".
  `boolean`
  `hasActionErrors()`
  Check whether there are any Action-level error messages.
  `boolean`
  `hasActionMessages()`
  Checks whether there are any Action-level messages.
  `boolean`
  `hasErrors()`
  Checks whether there are any action errors or field errors.
  `boolean`
  `hasFieldErrors()`
  Check whether there are any field errors associated with this action.
  `boolean`
  `hasKey(String key)`
  Checks if a message key exists.
  `String`
  `input()`
  `boolean`
  `isValidLocale(Locale locale)`
  Validates if provided `Locale` is value
  `boolean`
  `isValidLocaleString(String localeStr)`
  Validates if provided string is a valid `Locale`
  `void`
  `pause(String result)`
  Stops the action invocation immediately (by throwing a PauseException) and causes the action invocation to return the specified result, such as `Action.SUCCESS`, `Action.INPUT`, etc.
  `void`
  `setActionErrors(Collection<String> errorMessages)`
  Set the Collection of Action-level String error messages.
  `void`
  `setActionMessages(Collection<String> messages)`
  Set the Collection of Action-level String messages (not errors).
  `void`
  `setContainer(Container container)`
  `void`
  `setFieldErrors(Map<String,List<String>> errorMap)`
  Set the field error map of fieldname (String) to Collection of String error messages.
  `Locale`
  `toLocale(String localeStr)`
  Tries to convert provided locale string into `Locale` or returns null
  `void`
  `validate()`
  A default implementation that validates nothing.

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

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

- ## Field Details

  - ### container

    protected Container container

- ## Constructor Details

  - ### ActionSupport

    public ActionSupport()

- ## Method Details

  - ### setActionErrors

    public void setActionErrors(Collection<String> errorMessages)
    Description copied from interface: `ValidationAware`
    Set the Collection of Action-level String error messages.
    Specified by:
      `setActionErrors` in interface `ValidationAware`
    Parameters:
      `errorMessages` - Collection of String error messages

  - ### getActionErrors

    public Collection<String> getActionErrors()
    Description copied from interface: `ValidationAware`
    Get the Collection of Action-level error messages for this action. Error messages should not be added directly here, as implementations are free to return a new Collection or an Unmodifiable Collection.
    Specified by:
      `getActionErrors` in interface `ValidationAware`
    Returns:
      Collection of String error messages

  - ### setActionMessages

    public void setActionMessages(Collection<String> messages)
    Description copied from interface: `ValidationAware`
    Set the Collection of Action-level String messages (not errors).
    Specified by:
      `setActionMessages` in interface `ValidationAware`
    Parameters:
      `messages` - Collection of String messages (not errors).

  - ### getActionMessages

    public Collection<String> getActionMessages()
    Description copied from interface: `ValidationAware`
    Get the Collection of Action-level messages for this action. Messages should not be added directly here, as implementations are free to return a new Collection or an Unmodifiable Collection.
    Specified by:
      `getActionMessages` in interface `ValidationAware`
    Returns:
      Collection of String messages

  - ### setFieldErrors

    public void setFieldErrors(Map<String,List<String>> errorMap)
    Description copied from interface: `ValidationAware`
    Set the field error map of fieldname (String) to Collection of String error messages.
    Specified by:
      `setFieldErrors` in interface `ValidationAware`
    Parameters:
      `errorMap` - field error map

  - ### getFieldErrors

    public Map<String,List<String>> getFieldErrors()
    Description copied from interface: `ValidationAware`
    Get the field specific errors associated with this action. Error messages should not be added directly here, as implementations are free to return a new Collection or an Unmodifiable Collection.
    Specified by:
      `getFieldErrors` in interface `ValidationAware`
    Returns:
      Map with errors mapped from fieldname (String) to Collection of String error messages

  - ### getLocale

    public Locale getLocale()
    Description copied from interface: `LocaleProvider`
    Gets the provided locale.
    Specified by:
      `getLocale` in interface `LocaleProvider`
    Returns:
      the locale.

  - ### isValidLocaleString

    public boolean isValidLocaleString(String localeStr)
    Description copied from interface: `LocaleProvider`
    Validates if provided string is a valid `Locale`
    Specified by:
      `isValidLocaleString` in interface `LocaleProvider`
    Parameters:
      `localeStr` - a String representing locale, e.g. en_EN
    Returns:
      true if valid

  - ### isValidLocale

    public boolean isValidLocale(Locale locale)
    Description copied from interface: `LocaleProvider`
    Validates if provided `Locale` is value
    Specified by:
      `isValidLocale` in interface `LocaleProvider`
    Parameters:
      `locale` - instance of `Locale` to validate
    Returns:
      true if valid

  - ### toLocale

    public Locale toLocale(String localeStr)
    Description copied from interface: `LocaleProvider`
    Tries to convert provided locale string into `Locale` or returns null
    Specified by:
      `toLocale` in interface `LocaleProvider`
    Parameters:
      `localeStr` - a String representing locale, e.g.: en_EN
    Returns:
      instance of `Locale` or null

  - ### hasKey

    public boolean hasKey(String key)
    Description copied from interface: `TextProvider`
    Checks if a message key exists.
    Specified by:
      `hasKey` in interface `TextProvider`
    Parameters:
      `key` - message key to check for
    Returns:
      boolean true if key exists, false otherwise.

  - ### getText

    public String getText(String aTextName)
    Description copied from interface: `TextProvider`
    Gets a message based on a message key or if no message is found the provided key is returned.
    Specified by:
      `getText` in interface `TextProvider`
    Parameters:
      `aTextName` - the resource bundle key that is to be searched for
    Returns:
      the message as found in the resource bundle, or the provided key if none is found.

  - ### getText

    public String getText(String aTextName, String defaultValue)
    Description copied from interface: `TextProvider`
    Gets a message based on a key, or, if the message is not found, a supplied default value is returned.
    Specified by:
      `getText` in interface `TextProvider`
    Parameters:
      `aTextName` - the resource bundle key that is to be searched for
      `defaultValue` - the default value which will be returned if no message is found
    Returns:
      the message as found in the resource bundle, or defaultValue if none is found

  - ### getText

    public String getText(String aTextName, String defaultValue, String obj)
    Description copied from interface: `TextProvider`
    Gets a message based on a key using the supplied obj, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned.
    Specified by:
      `getText` in interface `TextProvider`
    Parameters:
      `aTextName` - the resource bundle key that is to be searched for
      `defaultValue` - the default value which will be returned if no message is found
      `obj` - obj to be used in a `MessageFormat` message
    Returns:
      the message as found in the resource bundle, or defaultValue if none is found

  - ### getText

    public String getText(String aTextName, List<?> args)
    Description copied from interface: `TextProvider`
    Gets a message based on a key using the supplied args, as defined in `MessageFormat` or the provided key if no message is found.
    Specified by:
      `getText` in interface `TextProvider`
    Parameters:
      `aTextName` - the resource bundle key that is to be searched for
      `args` - a list args to be used in a `MessageFormat` message
    Returns:
      the message as found in the resource bundle, or the provided key if none is found.

  - ### getText

    public String getText(String key, String[] args)
    Description copied from interface: `TextProvider`
    Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or the provided key if no message is found.
    Specified by:
      `getText` in interface `TextProvider`
    Parameters:
      `key` - the resource bundle key that is to be searched for
      `args` - an array args to be used in a `MessageFormat` message
    Returns:
      the message as found in the resource bundle, or the provided key if none is found.

  - ### getText

    public String getText(String aTextName, String defaultValue, List<?> args)
    Description copied from interface: `TextProvider`
    Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned.
    Specified by:
      `getText` in interface `TextProvider`
    Parameters:
      `aTextName` - the resource bundle key that is to be searched for
      `defaultValue` - the default value which will be returned if no message is found
      `args` - a list args to be used in a `MessageFormat` message
    Returns:
      the message as found in the resource bundle, or defaultValue if none is found

  - ### getText

    public String getText(String key, String defaultValue, String[] args)
    Description copied from interface: `TextProvider`
    Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned.
    Specified by:
      `getText` in interface `TextProvider`
    Parameters:
      `key` - the resource bundle key that is to be searched for
      `defaultValue` - the default value which will be returned if no message is found
      `args` - an array args to be used in a `MessageFormat` message
    Returns:
      the message as found in the resource bundle, or defaultValue if none is found

  - ### getText

    public String getText(String key, String defaultValue, List<?> args, ValueStack stack)
    Description copied from interface: `TextProvider`
    Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned. Instead of using the value stack in the ActionContext this version of the getText() method uses the provided value stack.
    Specified by:
      `getText` in interface `TextProvider`
    Parameters:
      `key` - the resource bundle key that is to be searched for
      `defaultValue` - the default value which will be returned if no message is found
      `args` - a list args to be used in a `MessageFormat` message
      `stack` - the value stack to use for finding the text
    Returns:
      the message as found in the resource bundle, or defaultValue if none is found

  - ### getText

    public String getText(String key, String defaultValue, String[] args, ValueStack stack)
    Description copied from interface: `TextProvider`
    Gets a message based on a key using the supplied args, as defined in `MessageFormat`, or, if the message is not found, a supplied default value is returned. Instead of using the value stack in the ActionContext this version of the getText() method uses the provided value stack.
    Specified by:
      `getText` in interface `TextProvider`
    Parameters:
      `key` - the resource bundle key that is to be searched for
      `defaultValue` - the default value which will be returned if no message is found
      `args` - an array args to be used in a `MessageFormat` message
      `stack` - the value stack to use for finding the text
    Returns:
      the message as found in the resource bundle, or defaultValue if none is found

  - ### getFormatted

    public String getFormatted(String key, String expr)
    Dedicated method to support I10N and conversion errors
    Parameters:
      `key` - message which contains formatting string
      `expr` - that should be formatted
    Returns:
      formatted expr with format specified by key

  - ### getTexts

    public ResourceBundle getTexts()
    Description copied from interface: `TextProvider`
    Get the resource bundle associated with the implementing class (usually an action).
    Specified by:
      `getTexts` in interface `TextProvider`
    Returns:
      the bundle

  - ### getTexts

    public ResourceBundle getTexts(String aBundleName)
    Description copied from interface: `TextProvider`
    Get the named bundle, such as "com/acme/Foo".
    Specified by:
      `getTexts` in interface `TextProvider`
    Parameters:
      `aBundleName` - the name of the resource bundle, such as `"com/acme/Foo"`.
    Returns:
      the bundle

  - ### addActionError

    public void addActionError(String anErrorMessage)
    Description copied from interface: `ValidationAware`
    Add an Action-level error message to this Action.
    Specified by:
      `addActionError` in interface `ValidationAware`
    Parameters:
      `anErrorMessage` - the error message

  - ### addActionMessage

    public void addActionMessage(String aMessage)
    Description copied from interface: `ValidationAware`
    Add an Action-level message to this Action.
    Specified by:
      `addActionMessage` in interface `ValidationAware`
    Parameters:
      `aMessage` - the message

  - ### addFieldError

    public void addFieldError(String fieldName, String errorMessage)
    Description copied from interface: `ValidationAware`
    Add an error message for a given field.
    Specified by:
      `addFieldError` in interface `ValidationAware`
    Parameters:
      `fieldName` - name of field
      `errorMessage` - the error message

  - ### input

    public String input() throws Exception
    Throws:
      `Exception`

  - ### execute

    public String execute() throws Exception
    A default implementation that does nothing an returns "success".

    Subclasses should override this method to provide their business logic.

    See also `Action.execute()`.

    Specified by:
      `execute` in interface `Action`
    Returns:
      returns `Action.SUCCESS`
    Throws:
      `Exception` - can be thrown by subclasses.

  - ### hasActionErrors

    public boolean hasActionErrors()
    Description copied from interface: `ValidationAware`
    Check whether there are any Action-level error messages.
    Specified by:
      `hasActionErrors` in interface `ValidationAware`
    Returns:
      true if any Action-level error messages have been registered

  - ### hasActionMessages

    public boolean hasActionMessages()
    Description copied from interface: `ValidationAware`
    Checks whether there are any Action-level messages.
    Specified by:
      `hasActionMessages` in interface `ValidationAware`
    Returns:
      true if any Action-level messages have been registered

  - ### hasErrors

    public boolean hasErrors()
    Description copied from interface: `ValidationAware`
    Checks whether there are any action errors or field errors.
    Specified by:
      `hasErrors` in interface `ValidationAware`
    Returns:
      `(hasActionErrors() || hasFieldErrors())`

  - ### hasFieldErrors

    public boolean hasFieldErrors()
    Description copied from interface: `ValidationAware`
    Check whether there are any field errors associated with this action.
    Specified by:
      `hasFieldErrors` in interface `ValidationAware`
    Returns:
      whether there are any field errors

  - ### clearFieldErrors

    public void clearFieldErrors()
    Clears field errors. Useful for Continuations and other situations where you might want to clear parts of the state on the same action.

  - ### clearActionErrors

    public void clearActionErrors()
    Clears action errors. Useful for Continuations and other situations where you might want to clear parts of the state on the same action.

  - ### clearMessages

    public void clearMessages()
    Clears messages. Useful for Continuations and other situations where you might want to clear parts of the state on the same action.

  - ### clearErrors

    public void clearErrors()
    Clears all errors. Useful for Continuations and other situations where you might want to clear parts of the state on the same action.

  - ### clearErrorsAndMessages

    public void clearErrorsAndMessages()
    Clears all errors and messages. Useful for Continuations and other situations where you might want to clear parts of the state on the same action.

  - ### validate

    public void validate()
    A default implementation that validates nothing. Subclasses should override this method to provide validations.
    Specified by:
      `validate` in interface `Validateable`

  - ### clone

    public Object clone() throws CloneNotSupportedException
    Overrides:
      `clone` in class `Object`
    Throws:
      `CloneNotSupportedException`

  - ### pause

    public void pause(String result)
    Stops the action invocation immediately (by throwing a PauseException) and causes the action invocation to return the specified result, such as `Action.SUCCESS`, `Action.INPUT`, etc.

    The next time this action is invoked (and using the same continuation ID), the method will resume immediately after where this method was called, with the entire call stack in the execute method restored.

    Note: this method can only be called within the `execute()` method.

    Parameters:
      `result` - the result to return - the same type of return value in the `execute()` method.

  - ### getTextProvider

    protected TextProvider getTextProvider()
    If called first time it will create `TextProviderFactory`, inject dependency (if `Container` is accesible) into in, then will create new `TextProvider` and store it in a field for future references and at the returns reference to that field
    Returns:
      reference to field with TextProvider

  - ### getLocaleProvider

    protected LocaleProvider getLocaleProvider()

  - ### getContainer

    protected Container getContainer()
    TODO: This a temporary solution, maybe we should consider stop injecting container into beans

  - ### setContainer

    public void setContainer(Container container)