Spring MessageSource不使用参数

时间:2019-05-20 23:07:10

标签: java spring spring-boot

我有以下代码:

    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

0 个答案:

没有答案