您可以为此创建自己的自定义消息源。
类似:
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配置为
<bean id="messageSource" class="SpecialMessageSource">
.....
</bean>
现在要解决 Label,您将调用 MessageSource's 以下任一方法
String getMessage(String code, Object[] args, Locale locale);
String getMessage(String code, 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)