MessageTag (Spring Framework 3.2.1.RELEASE API)
Date: 2013-01-24

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
  Direct Known Subclasses:
    ThemeTag

      public class MessageTag
      extends HtmlEscapingAwareTag

  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.

  Author:
    Rod Johnson, Juergen Hoeller
  See Also:
    `setCode(java.lang.String)`, `setText(java.lang.String)`, `HtmlEscapingAwareTag.setHtmlEscape(java.lang.String)`, `setJavaScriptEscape(java.lang.String)`, `HtmlEscapeTag.setDefaultHtmlEscape(java.lang.String)`, `WebUtils.HTML_ESCAPE_CONTEXT_PARAM`, 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

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected int` | `doStartTagInternal()` Resolves the message, escapes it if demanded, and writes it to the page (or exposes it as variable).
    `protected MessageSource` | `getMessageSource()` Use the current RequestContext's application context as MessageSource.
    `protected String` | `getNoSuchMessageExceptionDescription(NoSuchMessageException ex)` Return default exception message.
    `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(String javaScriptEscape)` Set JavaScript escaping for this tag, as boolean value.
    `void` | `setMessage(Object 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, doEndTag, findAncestorWithClass, getId, getParent, getValue, getValues, release, 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(Object message)

      Set the MessageSourceResolvable for this tag. Accepts a direct MessageSourceResolvable instance as well as a JSP expression language String that points to a MessageSourceResolvable.

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

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

      Resolves the message, escapes it if demanded, and writes it to the page (or exposes it as variable).
      Specified by:
        `doStartTagInternal` in class `RequestContextAwareTag`
      Returns:
        same as TagSupport.doStartTag
      Throws:
        `JspException`
        `IOException`
      See Also:
        `resolveMessage()`, `HtmlUtils.htmlEscape(String)`, `JavaScriptUtils.javaScriptEscape(String)`, `writeMessage(String)`

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