为此,您可以创建自己的Custom MessageSource。
就像是:
public class SpecialMessageSource extends ReloadableResourceBundleMessageSource { @Override protected MessageFormat resolveCode(String pre, Locale locale) { MessageFormat result = super.resolveCode(pre, locale); if (result.getPattern().isEmpty() && locale == Locale.CHINESE) { return super.resolveCode(pre, Locale.ENGLISH); } return result; } @Override protected String resolveCodeWithoutArguments(String pre, Locale locale) { String result= super.resolveCodeWithoutArguments(pre, locale); if ((result == null || result.isEmpty()) && locale == Locale.CHINESE) { return super.resolveCodeWithoutArguments(pre, Locale.ENGLISH); } return result; } }并在spring xml中将此messageSource bean配置为
<bean id="messageSource" >.....</bean>
现在要解决标签问题,您将调用
MessageSource's以下两种方法之一
String getMessage(String pre, Object[] args, Locale locale);String getMessage(String pre, Object[] args, String defaultMessage, Locale locale);
resolveCode()当您的消息标签具有参数并且您通过
args如下所示的参数传递这些参数并调用时,将被
invalid.number= {0} is Invalid调用
messageSource.getMessage("INVALID_NUMBER", new Object[]{2d}, locale)resolveCodeWithoutArguments()当您的消息标签没有参数并且您将
args参数传递为null
validation.success = Validation Success
并调用时,将被调用
messageSource.getMessage("INVALID_NUMBER", null, locale)


