Class MessageTag

  • All Implemented Interfaces:
    ArgumentAware, java.io.Serializable, javax.servlet.jsp.tagext.IterationTag, javax.servlet.jsp.tagext.JspTag, javax.servlet.jsp.tagext.Tag, javax.servlet.jsp.tagext.TryCatchFinally

    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 <aspectran: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.
    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).
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static java.lang.String DEFAULT_ARGUMENT_SEPARATOR
      Default separator for splitting an arguments String: a comma (",").
      • 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 Description
      MessageTag()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addArgument​(java.lang.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 java.lang.String getNoSuchMessageExceptionDescription​(NoSuchMessageException ex)
      Return default exception message.
      void release()  
      protected java.lang.Object[] resolveArguments​(java.lang.Object arguments)
      Resolve the given arguments Object into an arguments array.
      protected java.lang.String resolveMessage()
      Resolve the specified message into a concrete message String.
      void setArguments​(java.lang.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​(java.lang.String argumentSeparator)
      Set the separator to use for splitting an arguments String.
      void setCode​(java.lang.String code)
      Set the message code for this tag.
      void setJavaScriptEscape​(boolean javaScriptEscape)
      Set JavaScript escaping for this tag, as boolean value.
      void setScope​(java.lang.String scope)
      Set the scope to export the variable to.
      void setText​(java.lang.String text)
      Set the message text for this tag.
      void setVar​(java.lang.String var)
      Set PageContext attribute name under which to expose a variable that contains the resolved message.
      protected void writeMessage​(java.lang.String msg)
      Write the message to the page.
      • 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 java.lang.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

      • setCode

        public void setCode​(@Nullable
                            java.lang.String code)
        Set the message code for this tag.
      • setArguments

        public void setArguments​(@Nullable
                                 java.lang.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​(java.lang.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​(@Nullable
                                java.lang.Object argument)
                         throws javax.servlet.jsp.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:
        javax.servlet.jsp.JspTagException
      • setText

        public void setText​(@Nullable
                            java.lang.String text)
        Set the message text for this tag.
      • setVar

        public void setVar​(@Nullable
                           java.lang.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​(java.lang.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)
        Set JavaScript escaping for this tag, as boolean value. Default is "false".
      • doStartTagInternal

        protected final int doStartTagInternal()
                                        throws java.lang.Exception
        Description copied from class: CurrentActivityAwareTag
        Called by doStartTag to perform the actual work.
        Specified by:
        doStartTagInternal in class CurrentActivityAwareTag
        Returns:
        same as TagSupport.doStartTag
        Throws:
        java.lang.Exception - any exception, any checked one other than a JspException gets wrapped in a JspException by doStartTag
        See Also:
        TagSupport.doStartTag()
      • release

        public void release()
        Specified by:
        release in interface javax.servlet.jsp.tagext.Tag
        Overrides:
        release in class javax.servlet.jsp.tagext.TagSupport
      • resolveMessage

        protected java.lang.String resolveMessage()
                                           throws javax.servlet.jsp.JspException,
                                                  NoSuchMessageException
        Resolve the specified message into a concrete message String. The returned message String should be unescaped.
        Throws:
        javax.servlet.jsp.JspException
        NoSuchMessageException
      • resolveArguments

        @Nullable
        protected java.lang.Object[] resolveArguments​(@Nullable
                                                      java.lang.Object arguments)
        Resolve the given arguments Object into an arguments array.
        Parameters:
        arguments - the specified arguments Object
        Returns:
        the resolved arguments as array
        See Also:
        setArguments(java.lang.Object)
      • writeMessage

        protected void writeMessage​(java.lang.String msg)
                             throws java.io.IOException
        Write the message to the page.

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

        Parameters:
        msg - the message to write
        Throws:
        java.io.IOException - if writing failed
      • getNoSuchMessageExceptionDescription

        protected java.lang.String getNoSuchMessageExceptionDescription​(NoSuchMessageException ex)
        Return default exception message.