org.springframework.web.servlet.tags
Class MessageTag

java.lang.Object
  extended by javax.servlet.jsp.tagext.TagSupport
      extended by org.springframework.web.servlet.tags.RequestContextAwareTag
          extended by org.springframework.web.servlet.tags.HtmlEscapingAwareTag
              extended by 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
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
MessageTag()
           
 
Method Summary
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.