Spring Rest国际化返回500个http状态

时间:2018-10-03 15:24:08

标签: spring rest internationalization spring-rest

我正在通过Udemy课程学习Spring。我已经到达了国际化的主题,这对我和我目前的工作都非常有用。 在按照课程配置代码后,当我请求localhost:8080 / hello_world_internationalized时,我得到以下JSON作为响应:

{
    "timestamp": "2018-10-03T14:27:27.765+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "No message found under code 'good.morning.message' for locale 'en'.",
    "path": "/hello_world_internationalized"
}

这是配置代码:

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

    @Bean
    public LocaleResolver localeResolver() {
        AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
        localeResolver.setDefaultLocale(Locale.US);
        return localeResolver;
    }

    @Bean
    public MessageSource bundleMessageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("app_messages");      
        return messageSource;
    }
}

public class HelloWorldController {

    @Autowired
    private MessageSource messageSource;

    @GetMapping(path = "/hello_world_internationalized")
    public String helloWorldInternationalized() {
        return messageSource.getMessage("good.morning.message", null, LocaleContextHolder.getLocale());
    }
}

我在Internet上进行了搜索,发现了一些话题,这些话题在谈论标记,其中包含用于国际化的配置。

但是我不知道在哪里放置这个配置标签。当我尝试创建Rest服务时,我将Web,rest服务和devtools用作我项目的依赖项。我也正在使用HATEOAS。 我还注意到,我显然没有配置这些内容所需的WEB-INF文件夹和web.xml文件。我在哪里可以创建这些文件夹和文件?

2 个答案:

答案 0 :(得分:0)

确保在资源路径 app_messages_en.properties (用于区域设置的文件)和 app_messages.properties (用于默认区域设置的文件)文件>(src / main / resources) 还要在此文件中添加键值

good.morning.message=value of this key

将要本地化的值的键在每个文件中都必须相同,并且其值必须与它们对应的语言相对应。

答案 1 :(得分:0)

这看起来像服务器缓存问题,无法读取属性文件。 (虽然不确定)

我已通过在application.properties文件中启用DEBUG并重新启动服务器来解决了此问题。 logging.level.org.springframework =调试

它开始选择更改。