您可以为此创建自己的自定义消息源.
就像是:
public class SpecialMessageSource extends ReloadableResourceBundleMessageSource {
@Override
protected MessageFormat resolveCode(String code,Locale locale) {
MessageFormat result = super.resolveCode(code,locale);
if (result.getPattern().isEmpty() && locale == Locale.CHINESE) {
return super.resolveCode(code,Locale.ENGLISH);
}
return result;
}
@Override
protected String resolveCodeWithoutArguments(String code,Locale locale) {
String result= super.resolveCodeWithoutArguments(code,locale);
if ((result == null || result.isEmpty()) && locale == Locale.CHINESE) {
return super.resolveCodeWithoutArguments(code,Locale.ENGLISH);
}
return result;
}
}
并在spring xml中配置此messageSource bean为
现在要解析Label,您将调用MessageSource的以下方法之一
String getMessage(String code,Object[] args,Locale locale);
String getMessage(String code,String defaultMessage,Locale locale);
当您的消息标签包含参数并且您通过args参数传递这些参数时,将调用resolveCode(),如下所示
invalid.number = {0}无效
并调用messageSource.getMessage(“INVALID_NUMBER”,新对象[] {2d},语言环境)
当您的消息标签没有参数并且将args参数传递为null时,将调用resolveCodeWithoutArguments()
validation.success =验证成功
并调用messageSource.getMessage(“INVALID_NUMBER”,null,locale)