/*
 * Copyright 2002-2018 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.context.support;

import java.util.Locale;

import org.springframework.context.MessageSource;
import org.springframework.context.MessageSourceResolvable;
import org.springframework.context.NoSuchMessageException;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.lang.Nullable;

Helper class for easy access to messages from a MessageSource, providing various overloaded getMessage methods.

Available from ApplicationObjectSupport, but also reusable as a standalone helper to delegate to in application objects.

Author:Juergen Hoeller
See Also:
Since:23.10.2003
/** * Helper class for easy access to messages from a MessageSource, * providing various overloaded getMessage methods. * * <p>Available from ApplicationObjectSupport, but also reusable * as a standalone helper to delegate to in application objects. * * @author Juergen Hoeller * @since 23.10.2003 * @see ApplicationObjectSupport#getMessageSourceAccessor */
public class MessageSourceAccessor { private final MessageSource messageSource; @Nullable private final Locale defaultLocale;
Create a new MessageSourceAccessor, using LocaleContextHolder's locale as default locale.
Params:
  • messageSource – the MessageSource to wrap
See Also:
/** * Create a new MessageSourceAccessor, using LocaleContextHolder's locale * as default locale. * @param messageSource the MessageSource to wrap * @see org.springframework.context.i18n.LocaleContextHolder#getLocale() */
public MessageSourceAccessor(MessageSource messageSource) { this.messageSource = messageSource; this.defaultLocale = null; }
Create a new MessageSourceAccessor, using the given default locale.
Params:
  • messageSource – the MessageSource to wrap
  • defaultLocale – the default locale to use for message access
/** * Create a new MessageSourceAccessor, using the given default locale. * @param messageSource the MessageSource to wrap * @param defaultLocale the default locale to use for message access */
public MessageSourceAccessor(MessageSource messageSource, Locale defaultLocale) { this.messageSource = messageSource; this.defaultLocale = defaultLocale; }
Return the default locale to use if no explicit locale has been given.

The default implementation returns the default locale passed into the corresponding constructor, or LocaleContextHolder's locale as fallback. Can be overridden in subclasses.

See Also:
/** * Return the default locale to use if no explicit locale has been given. * <p>The default implementation returns the default locale passed into the * corresponding constructor, or LocaleContextHolder's locale as fallback. * Can be overridden in subclasses. * @see #MessageSourceAccessor(org.springframework.context.MessageSource, java.util.Locale) * @see org.springframework.context.i18n.LocaleContextHolder#getLocale() */
protected Locale getDefaultLocale() { return (this.defaultLocale != null ? this.defaultLocale : LocaleContextHolder.getLocale()); }
Retrieve the message for the given code and the default Locale.
Params:
  • code – code of the message
  • defaultMessage – the String to return if the lookup fails
Returns:the message
/** * Retrieve the message for the given code and the default Locale. * @param code code of the message * @param defaultMessage the String to return if the lookup fails * @return the message */
public String getMessage(String code, String defaultMessage) { String msg = this.messageSource.getMessage(code, null, defaultMessage, getDefaultLocale()); return (msg != null ? msg : ""); }
Retrieve the message for the given code and the given Locale.
Params:
  • code – code of the message
  • defaultMessage – the String to return if the lookup fails
  • locale – the Locale in which to do lookup
Returns:the message
/** * Retrieve the message for the given code and the given Locale. * @param code code of the message * @param defaultMessage the String to return if the lookup fails * @param locale the Locale in which to do lookup * @return the message */
public String getMessage(String code, String defaultMessage, Locale locale) { String msg = this.messageSource.getMessage(code, null, defaultMessage, locale); return (msg != null ? msg : ""); }
Retrieve the message for the given code and the default Locale.
Params:
  • code – code of the message
  • args – arguments for the message, or null if none
  • defaultMessage – the String to return if the lookup fails
Returns:the message
/** * Retrieve the message for the given code and the default Locale. * @param code code of the message * @param args arguments for the message, or {@code null} if none * @param defaultMessage the String to return if the lookup fails * @return the message */
public String getMessage(String code, @Nullable Object[] args, String defaultMessage) { String msg = this.messageSource.getMessage(code, args, defaultMessage, getDefaultLocale()); return (msg != null ? msg : ""); }
Retrieve the message for the given code and the given Locale.
Params:
  • code – code of the message
  • args – arguments for the message, or null if none
  • defaultMessage – the String to return if the lookup fails
  • locale – the Locale in which to do lookup
Returns:the message
/** * Retrieve the message for the given code and the given Locale. * @param code code of the message * @param args arguments for the message, or {@code null} if none * @param defaultMessage the String to return if the lookup fails * @param locale the Locale in which to do lookup * @return the message */
public String getMessage(String code, @Nullable Object[] args, String defaultMessage, Locale locale) { String msg = this.messageSource.getMessage(code, args, defaultMessage, locale); return (msg != null ? msg : ""); }
Retrieve the message for the given code and the default Locale.
Params:
  • code – code of the message
Throws:
Returns:the message
/** * Retrieve the message for the given code and the default Locale. * @param code code of the message * @return the message * @throws org.springframework.context.NoSuchMessageException if not found */
public String getMessage(String code) throws NoSuchMessageException { return this.messageSource.getMessage(code, null, getDefaultLocale()); }
Retrieve the message for the given code and the given Locale.
Params:
  • code – code of the message
  • locale – the Locale in which to do lookup
Throws:
Returns:the message
/** * Retrieve the message for the given code and the given Locale. * @param code code of the message * @param locale the Locale in which to do lookup * @return the message * @throws org.springframework.context.NoSuchMessageException if not found */
public String getMessage(String code, Locale locale) throws NoSuchMessageException { return this.messageSource.getMessage(code, null, locale); }
Retrieve the message for the given code and the default Locale.
Params:
  • code – code of the message
  • args – arguments for the message, or null if none
Throws:
Returns:the message
/** * Retrieve the message for the given code and the default Locale. * @param code code of the message * @param args arguments for the message, or {@code null} if none * @return the message * @throws org.springframework.context.NoSuchMessageException if not found */
public String getMessage(String code, @Nullable Object[] args) throws NoSuchMessageException { return this.messageSource.getMessage(code, args, getDefaultLocale()); }
Retrieve the message for the given code and the given Locale.
Params:
  • code – code of the message
  • args – arguments for the message, or null if none
  • locale – the Locale in which to do lookup
Throws:
Returns:the message
/** * Retrieve the message for the given code and the given Locale. * @param code code of the message * @param args arguments for the message, or {@code null} if none * @param locale the Locale in which to do lookup * @return the message * @throws org.springframework.context.NoSuchMessageException if not found */
public String getMessage(String code, @Nullable Object[] args, Locale locale) throws NoSuchMessageException { return this.messageSource.getMessage(code, args, locale); }
Retrieve the given MessageSourceResolvable (e.g. an ObjectError instance) in the default Locale.
Params:
  • resolvable – the MessageSourceResolvable
Throws:
Returns:the message
/** * Retrieve the given MessageSourceResolvable (e.g. an ObjectError instance) * in the default Locale. * @param resolvable the MessageSourceResolvable * @return the message * @throws org.springframework.context.NoSuchMessageException if not found */
public String getMessage(MessageSourceResolvable resolvable) throws NoSuchMessageException { return this.messageSource.getMessage(resolvable, getDefaultLocale()); }
Retrieve the given MessageSourceResolvable (e.g. an ObjectError instance) in the given Locale.
Params:
  • resolvable – the MessageSourceResolvable
  • locale – the Locale in which to do lookup
Throws:
Returns:the message
/** * Retrieve the given MessageSourceResolvable (e.g. an ObjectError instance) * in the given Locale. * @param resolvable the MessageSourceResolvable * @param locale the Locale in which to do lookup * @return the message * @throws org.springframework.context.NoSuchMessageException if not found */
public String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException { return this.messageSource.getMessage(resolvable, locale); } }