我有以下代码:
System.out.println(ex.errorArgument[0]);
String defaultErrorMessage = messages.getMessage(ex.errorMessage, ex.errorArgument, Locale.ENGLISH);
String localErrorMessage = messages.getMessage(ex.errorMessage, ex.errorArgument, defaultErrorMessage, locale);
Logger.error(this.getClass(), "handleApiException()", ex.status+": "+ex.errorCode+": "+defaultErrorMessage+": "
+(ex.chainedException==null?"No further exception.":ex.chainedException.getMessage()));
显示以下消息
api.censored=Name cannot have the censored word '{0}' in it. Please choose another.
但是,它不能替换参数!
2019-05-20 23:02:46.484 ERROR 10884 --- [nio-8080-exec-1] c.example.apis.RestExceptionHandler : handleApiException(): 406: CENSORED_WORD: Name cannot have the censored word {0} in it. Please choose another.: No further exception.
JavaDocs说
String org.springframework.context.MessageSource.getMessage(字符串代码,Object []参数,String defaultMessage,语言环境语言环境)
尝试解决该消息。如果未找到任何消息,则返回默认消息。
- 参数:
- 编码要查找的代码,例如“ calculator.noRateSet”。鼓励此类的用户将消息名基于相关的完全限定的类名,从而避免冲突并确保最大的清晰度。
- 为消息中的参数填充参数数组(消息中的参数看起来像“ {0}”,“ {1,date}”,“ {2,time}” < / strong>),如果没有则为null。
- defaultMessage默认消息,如果查找失败,则返回该消息
- locale在其中进行查找的语言环境
春季4.3.24