Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 给出消息的Spring启动应用程序未找到区域设置的消息';en#U GB';_Java_Spring_Spring Boot_Message_Properties File - Fatal编程技术网

Java 给出消息的Spring启动应用程序未找到区域设置的消息';en#U GB';

Java 给出消息的Spring启动应用程序未找到区域设置的消息';en#U GB';,java,spring,spring-boot,message,properties-file,Java,Spring,Spring Boot,Message,Properties File,在我的Spring Boot应用程序中,我收到一条消息:org.springframework.context.NoSuchMessageException:在区域设置“en_GB”的代码“invalidAdminPassword”下找不到消息。 我知道这是由于MessageSource对象造成的,在我的代码中,该对象被定义为: @Bean public ReloadableResourceBundleMessageSource messageSource() { Rel

在我的Spring Boot应用程序中,我收到一条消息:
org.springframework.context.NoSuchMessageException:在区域设置“en_GB”的代码“invalidAdminPassword”下找不到消息。

我知道这是由于
MessageSource
对象造成的,在我的代码中,该对象被定义为:

@Bean
    public ReloadableResourceBundleMessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        Locale.setDefault(Locale.UK);
        messageSource.setBasename("messages_en_GB");
        messageSource.setCacheSeconds(3600); // Refresh cache once per hour.
        return messageSource;
    }
messages\u en\u GB.properties
中,我有一条消息:

# Other validation messages.
invalidAdminPassword=Invalid password.
在有关控制员中,我有:

System.out.println(messageSource.getMessage("invalidAdminPassword", null, Locale.UK));
只需测试从
messages\u en_GB.properties
文件中的检索

我相信我使用的是Spring引导默认设置,那么为什么我会收到消息
org.springframework.context.NoSuchMessageException:在区域设置“en_GB”的代码“invalidAdminPassword”下找不到消息。


有人能提供建议吗?

tl;dr:在这个示例中,有一个最小的运行示例

要解决您的问题,请回答,请提供更多详细信息:

a) 你把你的信息放在哪里了


b) 是否有多条消息{.*}.properties?

可以检查可能的错误

  • 如果消息源文件已定义到位
  • 请求的区域设置是否有任何消息源文件
  • 您已经定义了一个名为“messageSource”的bean
  • 如果使用java配置,它必须是

    @Bean
    public MessageSource messageSource() {
         ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
         messageSource.setBasename("/WEB-INF/messages");
    }
    
    这里,我们的消息文件应该位于定义的WEB-INF中

    如果我们只定义

    public MessageSource setUpmessageSource() {}
    

    然后没有名为
    messageSource

    的bean,消息是关于键“name.required”的。它与关键字“invalidAdminPassword”无关。阅读信息会有所帮助。阅读异常的堆栈跟踪也有帮助。我在问题中已经纠正了这一点。谢谢。如果您同时拥有“messages.properties”和“massages_en_GB.properties”,则无需引用本地化的基本名称。只要一个简单的挫折名称(“消息”)就可以了。(这里有一个很好的例子:)a。文件
    message\u en\u GB.properties
    位于文件夹
    src/main/resources
    中。B只有一个消息文件。很高兴听到。实际问题是什么?我把
    en_GB
    UK
    LOCALE
    设置搞混了。最后,根据您在GitHub上的演示,我只是简单地使用了
    US
    。只有filename对我不起作用,我不知道为什么?但我们通过在basename中添加classpath:filename解决了这个问题。它工作正常,我可以在配置中添加n个属性文件等。messageSource.setBasenames(“classpath:messages1”,“类路径:messages2”);
    public MessageSource setUpmessageSource() {}