org.springframework.web.servlet.tags

## Class MessageTag

- java.lang.Object
- - javax.servlet.jsp.tagext.TagSupport
  - - org.springframework.web.servlet.tags.RequestContextAwareTag
    - - org.springframework.web.servlet.tags.HtmlEscapingAwareTag
      - - org.springframework.web.servlet.tags.MessageTag

- All Implemented Interfaces:
    Serializable, IterationTag, JspTag, Tag, TryCatchFinally, ArgumentAware
  Direct Known Subclasses:
    ThemeTag

      public class MessageTag
      extends HtmlEscapingAwareTag
      implements ArgumentAware

  Custom JSP tag to look up a message in the scope of this page. Messages are resolved using the ApplicationContext and thus support internationalization.

  Detects an HTML escaping setting, either on this tag instance, the page level, or the `web.xml` level. Can also apply JavaScript escaping.

  If "code" isn't set or cannot be resolved, "text" will be used as default message. Thus, this tag can also be used for HTML escaping of any texts.

  Message arguments can be specified via the `arguments` attribute or by using nested `<spring:argument>` tags.

  Author:
    Rod Johnson, Juergen Hoeller, Nicholas Williams
  See Also:
    `setCode(java.lang.String)`, `setText(java.lang.String)`, `HtmlEscapingAwareTag.setHtmlEscape(boolean)`, `setJavaScriptEscape(boolean)`, `HtmlEscapeTag.setDefaultHtmlEscape(boolean)`, `WebUtils.HTML_ESCAPE_CONTEXT_PARAM`, `ArgumentTag`, Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `DEFAULT_ARGUMENT_SEPARATOR` Default separator for splitting an arguments String: a comma (",")

    - ### Fields inherited from class org.springframework.web.servlet.tags.RequestContextAwareTag

      `logger, REQUEST_CONTEXT_PAGE_ATTRIBUTE`

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

      `id, pageContext`

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

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addArgument(Object argument)` Callback hook for nested spring:argument tags to pass their value to the parent tag.
    `int` | `doEndTag()` Resolves the message, escapes it if demanded, and writes it to the page (or exposes it as variable).
    `protected int` | `doStartTagInternal()` Called by doStartTag to perform the actual work.
    `protected MessageSource` | `getMessageSource()` Use the current RequestContext's application context as MessageSource.
    `protected String` | `getNoSuchMessageExceptionDescription(NoSuchMessageException ex)` Return default exception message.
    `void` | `release()`
    `protected Object[]` | `resolveArguments(Object arguments)` Resolve the given arguments Object into an arguments array.
    `protected String` | `resolveMessage()` Resolve the specified message into a concrete message String.
    `void` | `setArguments(Object arguments)` Set optional message arguments for this tag, as a comma-delimited String (each String argument can contain JSP EL), an Object array (used as argument array), or a single Object (used as single argument).
    `void` | `setArgumentSeparator(String argumentSeparator)` Set the separator to use for splitting an arguments String.
    `void` | `setCode(String code)` Set the message code for this tag.
    `void` | `setJavaScriptEscape(boolean javaScriptEscape)` Set JavaScript escaping for this tag, as boolean value.
    `void` | `setMessage(MessageSourceResolvable message)` Set the MessageSourceResolvable for this tag.
    `void` | `setScope(String scope)` Set the scope to export the variable to.
    `void` | `setText(String text)` Set the message text for this tag.
    `void` | `setVar(String var)` Set PageContext attribute name under which to expose a variable that contains the resolved message.
    `protected void` | `writeMessage(String msg)` Write the message to the page.

    - ### Methods inherited from class org.springframework.web.servlet.tags.HtmlEscapingAwareTag

      `isDefaultHtmlEscape, isHtmlEscape, setHtmlEscape`

    - ### Methods inherited from class org.springframework.web.servlet.tags.RequestContextAwareTag

      `doCatch, doFinally, doStartTag, getRequestContext`

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

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

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

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

- - ### Field Detail

    - #### DEFAULT_ARGUMENT_SEPARATOR

          public static final String DEFAULT_ARGUMENT_SEPARATOR

      Default separator for splitting an arguments String: a comma (",")
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### MessageTag

          public MessageTag()

  - ### Method Detail

    - #### setMessage

          public void setMessage(MessageSourceResolvable message)

      Set the MessageSourceResolvable for this tag.

      If a MessageSourceResolvable is specified, it effectively overrides any code, arguments or text specified on this tag.

    - #### setCode

          public void setCode(String code)

      Set the message code for this tag.

    - #### setArguments

          public void setArguments(Object arguments)

      Set optional message arguments for this tag, as a comma-delimited String (each String argument can contain JSP EL), an Object array (used as argument array), or a single Object (used as single argument).

    - #### setArgumentSeparator

          public void setArgumentSeparator(String argumentSeparator)

      Set the separator to use for splitting an arguments String. Default is a comma (",").
      See Also:
        `setArguments(java.lang.Object)`

    - #### addArgument

          public void addArgument(Object argument)
                           throws JspTagException

      Description copied from interface: `ArgumentAware`
      Callback hook for nested spring:argument tags to pass their value to the parent tag.
      Specified by:
        `addArgument` in interface `ArgumentAware`
      Parameters:
        `argument` - the result of the nested `spring:argument` tag
      Throws:
        `JspTagException`

    - #### setText

          public void setText(String text)

      Set the message text for this tag.

    - #### setVar

          public void setVar(String var)

      Set PageContext attribute name under which to expose a variable that contains the resolved message.
      See Also:
        `setScope(java.lang.String)`, `JspContext.setAttribute(java.lang.String, java.lang.Object)`

    - #### setScope

          public void setScope(String scope)

      Set the scope to export the variable to. Default is SCOPE_PAGE ("page").
      See Also:
        `setVar(java.lang.String)`, `TagUtils.SCOPE_PAGE`, `JspContext.setAttribute(java.lang.String, java.lang.Object)`

    - #### setJavaScriptEscape

          public void setJavaScriptEscape(boolean javaScriptEscape)
                                   throws JspException

      Set JavaScript escaping for this tag, as boolean value. Default is "false".
      Throws:
        `JspException`

    - #### doStartTagInternal

          protected final int doStartTagInternal()
                                          throws JspException,
                                                 IOException

      Description copied from class: `RequestContextAwareTag`
      Called by doStartTag to perform the actual work.
      Specified by:
        `doStartTagInternal` in class `RequestContextAwareTag`
      Returns:
        same as TagSupport.doStartTag
      Throws:
        `JspException`
        `IOException`
      See Also:
        `TagSupport.doStartTag()`

    - #### doEndTag

          public int doEndTag()
                       throws JspException

      Resolves the message, escapes it if demanded, and writes it to the page (or exposes it as variable).
      Specified by:
        `doEndTag` in interface `Tag`
      Overrides:
        `doEndTag` in class `TagSupport`
      Throws:
        `JspException`
      See Also:
        `resolveMessage()`, `HtmlUtils.htmlEscape(String)`, `JavaScriptUtils.javaScriptEscape(String)`, `writeMessage(String)`

    - #### release

          public void release()

      Specified by:
        `release` in interface `Tag`
      Overrides:
        `release` in class `TagSupport`

    - #### resolveMessage

          protected String resolveMessage()
                                   throws JspException,
                                          NoSuchMessageException

      Resolve the specified message into a concrete message String. The returned message String should be unescaped.
      Throws:
        `JspException`
        `NoSuchMessageException`

    - #### resolveArguments

          protected Object[] resolveArguments(Object arguments)
                                       throws JspException

      Resolve the given arguments Object into an arguments array.
      Parameters:
        `arguments` - the specified arguments Object
      Returns:
        the resolved arguments as array
      Throws:
        `JspException` - if argument conversion failed
      See Also:
        `setArguments(java.lang.Object)`

    - #### writeMessage

          protected void writeMessage(String msg)
                               throws IOException

      Write the message to the page.

      Can be overridden in subclasses, e.g. for testing purposes.

      Parameters:
        `msg` - the message to write
      Throws:
        `IOException` - if writing failed

    - #### getMessageSource

          protected MessageSource getMessageSource()

      Use the current RequestContext's application context as MessageSource.

    - #### getNoSuchMessageExceptionDescription

          protected String getNoSuchMessageExceptionDescription(NoSuchMessageException ex)

      Return default exception message.