org.springframework.context.support

Class MessageSourceSupport

  • java.lang.Object
    • org.springframework.context.support.MessageSourceSupport
  • Direct Known Subclasses:
    AbstractMessageSource, DelegatingMessageSource


    public abstract class MessageSourceSupport
    extends java.lang.Object
    Base class for message source implementations, providing support infrastructure such as MessageFormat handling but not implementing concrete methods defined in the MessageSource.

    AbstractMessageSource derives from this class, providing concrete getMessage implementations that delegate to a central template method for message code resolution.

    Since:
    2.5.5
    Author:
    Juergen Hoeller
    • Field Summary

      Fields 
      Modifier and Type Field and Description
      protected Log logger
      Logger available to subclasses.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method and Description
      protected java.text.MessageFormat createMessageFormat(java.lang.String msg, java.util.Locale locale)
      Create a MessageFormat for the given message and Locale.
      protected java.lang.String formatMessage(java.lang.String msg, java.lang.Object[] args, java.util.Locale locale)
      Format the given message String, using cached MessageFormats.
      protected boolean isAlwaysUseMessageFormat()
      Return whether to always apply the MessageFormat rules, parsing even messages without arguments.
      protected java.lang.String renderDefaultMessage(java.lang.String defaultMessage, java.lang.Object[] args, java.util.Locale locale)
      Render the given default message String.
      protected java.lang.Object[] resolveArguments(java.lang.Object[] args, java.util.Locale locale)
      Template method for resolving argument objects.
      void setAlwaysUseMessageFormat(boolean alwaysUseMessageFormat)
      Set whether to always apply the MessageFormat rules, parsing even messages without arguments.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • logger

        protected final Log logger
        Logger available to subclasses.
    • Constructor Detail

      • MessageSourceSupport

        public MessageSourceSupport()
    • Method Detail

      • setAlwaysUseMessageFormat

        public void setAlwaysUseMessageFormat(boolean alwaysUseMessageFormat)
        Set whether to always apply the MessageFormat rules, parsing even messages without arguments.

        Default is "false": Messages without arguments are by default returned as-is, without parsing them through MessageFormat. Set this to "true" to enforce MessageFormat for all messages, expecting all message texts to be written with MessageFormat escaping.

        For example, MessageFormat expects a single quote to be escaped as "''". If your message texts are all written with such escaping, even when not defining argument placeholders, you need to set this flag to "true". Else, only message texts with actual arguments are supposed to be written with MessageFormat escaping.

        See Also:
        MessageFormat
      • isAlwaysUseMessageFormat

        protected boolean isAlwaysUseMessageFormat()
        Return whether to always apply the MessageFormat rules, parsing even messages without arguments.
      • renderDefaultMessage

        protected java.lang.String renderDefaultMessage(java.lang.String defaultMessage,
                                                        @Nullable
                                                        java.lang.Object[] args,
                                                        java.util.Locale locale)
        Render the given default message String. The default message is passed in as specified by the caller and can be rendered into a fully formatted default message shown to the user.

        The default implementation passes the String to formatMessage, resolving any argument placeholders found in them. Subclasses may override this method to plug in custom processing of default messages.

        Parameters:
        defaultMessage - the passed-in default message String
        args - array of arguments that will be filled in for params within the message, or null if none.
        locale - the Locale used for formatting
        Returns:
        the rendered default message (with resolved arguments)
        See Also:
        formatMessage(String, Object[], java.util.Locale)
      • formatMessage

        protected java.lang.String formatMessage(java.lang.String msg,
                                                 @Nullable
                                                 java.lang.Object[] args,
                                                 java.util.Locale locale)
        Format the given message String, using cached MessageFormats. By default invoked for passed-in default messages, to resolve any argument placeholders found in them.
        Parameters:
        msg - the message to format
        args - array of arguments that will be filled in for params within the message, or null if none
        locale - the Locale used for formatting
        Returns:
        the formatted message (with resolved arguments)
      • createMessageFormat

        protected java.text.MessageFormat createMessageFormat(java.lang.String msg,
                                                              java.util.Locale locale)
        Create a MessageFormat for the given message and Locale.
        Parameters:
        msg - the message to create a MessageFormat for
        locale - the Locale to create a MessageFormat for
        Returns:
        the MessageFormat instance
      • resolveArguments

        protected java.lang.Object[] resolveArguments(@Nullable
                                                      java.lang.Object[] args,
                                                      java.util.Locale locale)
        Template method for resolving argument objects.

        The default implementation simply returns the given argument array as-is. Can be overridden in subclasses in order to resolve special argument types.

        Parameters:
        args - the original argument array
        locale - the Locale to resolve against
        Returns:
        the resolved argument array