Class MessageTag

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

public class MessageTag extends HtmlEscapingAwareTag implements ArgumentAware
The <message> tag looks 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.

Attribute Summary
Attribute Required? Runtime Expression? Description
arguments false true 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).
argumentSeparator false true The separator character to be used for splitting the arguments string value; defaults to a 'comma' (',').
code false true The code (key) to use when looking up the message. If code is not provided, the text attribute will be used.
htmlEscape false true Set HTML escaping for this tag, as boolean value. Overrides the default HTML escaping setting for the current page.
javaScriptEscape false true Set JavaScript escaping for this tag, as boolean value. Default is false.
message false true A MessageSourceResolvable argument (direct or through JSP EL). Fits nicely when used in conjunction with Spring’s own validation error classes which all implement the MessageSourceResolvable interface. For example, this allows you to iterate over all of the errors in a form, passing each error (using a runtime expression) as the value of this 'message' attribute, thus effecting the easy display of such error messages.
scope false true The scope to use when exporting the result to a variable. This attribute is only used when var is also set. Possible values are page, request, session and application.
text false true Default text to output when a message for the given code could not be found. If both text and code are not set, the tag will output null.
var false true The string to use when binding the result to the page, request, session or application scope. If not specified, the result gets outputted to the writer (i.e. typically directly to the JSP).
Author:
Rod Johnson, Juergen Hoeller, Nicholas Williams
See Also:
  • Field Details

    • DEFAULT_ARGUMENT_SEPARATOR

      public static final String DEFAULT_ARGUMENT_SEPARATOR
      Default separator for splitting an arguments String: a comma (",").
      See Also:
  • Constructor Details

    • MessageTag

      public MessageTag()
  • Method Details

    • setMessage

      public void setMessage(org.springframework.context.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:
    • addArgument

      public void addArgument(@Nullable 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

      public void setScope(String scope)
      Set the scope to export the variable to. Default is SCOPE_PAGE ("page").
      See Also:
    • 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:
    • 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:
    • release

      public void release()
      Specified by:
      release in interface Tag
      Overrides:
      release in class TagSupport
    • resolveMessage

      protected String resolveMessage() throws JspException, org.springframework.context.NoSuchMessageException
      Resolve the specified message into a concrete message String. The returned message String should be unescaped.
      Throws:
      JspException
      org.springframework.context.NoSuchMessageException
    • resolveArguments

      @Nullable protected Object[] resolveArguments(@Nullable 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:
    • 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 org.springframework.context.MessageSource getMessageSource()
      Use the current RequestContext's application context as MessageSource.
    • getNoSuchMessageExceptionDescription

      protected String getNoSuchMessageExceptionDescription(org.springframework.context.NoSuchMessageException ex)
      Return default exception message.