Validation messages in messages.properties file for i18n internationalization by locale in spring boot
user.login.invalid.id=0
user.login.invalid=Your user name or password was invalid
@RestController
@RequestMapping("/user")
public class UserControler {
@Autowired
UserService userService;
@Autowired
MessageByLocaleService messageByLocaleService;
@RequestMapping(value = "/userlogin", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<User> login(
@RequestBody UserCred userCred)
throws UnsupportedEncodingException {
String invalidLogin = messageByLocaleService.getMessage("user.login.invalid");
}
}
@Component
public class MessageByLocaleServiceImpl implements MessageByLocaleService {
@Autowired
private MessageSource messageSource;
@Override
public String getMessage(String id) {
Locale locale = LocaleContextHolder.getLocale();
return messageSource.getMessage(id,null,locale);
}
}
public interface MessageByLocaleService {
public String getMessage(String id);
}
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@RequestMapping("/")
@ResponseBody
String home() {
return "
}
@Bean
public LocaleResolver localeResolver() {
SessionLocaleResolver slr = new SessionLocaleResolver();
slr.setDefaultLocale(Locale.US);
return slr;
}
@Bean
public ReloadableResourceBundleMessageSource messageSource() {
ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
messageSource.setBasename("classpath:locale/messages");
messageSource.setCacheSeconds(3600); //refresh cache once per hour
return messageSource;
}
}