Spring: No message found under code for locale 'en_US'

For those using @Bean annotation for bundleMessageSource. Add the name for @Bean.

name="messageSource"

Use the same name we used to create the MessageSource object in @RestController class

@RestController
public class HelloWorldController {

    @Autowired
    private MessageSource messageSource;

    @GetMapping(path = "/hello-world-internationalized")
    public String helloWorldInternationalized(@RequestHeader(name = "Accept-Language", required = false) Locale locale) {
        return messageSource.getMessage("good.morning.message", null, locale);
    }
}

Then in the @SpringBootApplication class

@Bean(name="messageSource")//wont work without the bean name
public ResourceBundleMessageSource bundleMessageSource() {
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource();
    messageSource.setBasename("messages");
    return messageSource;
}

Referred this link


does it work if you change to:

classpath:messages

?

I had the experience that if using ReloadableResourceBundleMessageSource, in jsp will not find the properties file. adding classpath: before the basename solved my problem.

Well even though was my project managed by maven, I think you can give it a try anyway.

Tags:

Java

Spring