Я пытаюсь создать веб-страницу, которая показывает текст на другом языке в зависимости от местоположения пользователя. Для этого я использую файлы свойств со строками, которые должны отображаться на каждом языке, и загружаю их как пакет ресурсов, а затем добавляю эти строки в модель, чтобы я мог получить к ним доступ в Thymeleaf. Вот мой код:
@Controller
public class IndexController {
@GetMapping("/")
public String index(Model model, Locale locale) {
ResourceBundle rb = ResourceBundle.getBundle("lang/index", locale);
addResourceBundleToModel(model, rb);
System.out.println(model.getAttribute("test2"));
return "index";
}
private void addResourceBundleToModel(Model model,
ResourceBundle resourceBundle) {
for (String key : resourceBundle.keySet()) {
model.addAttribute(key, resourceBundle.getString(key));
}
}
}
И файл тимелина:
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<a th:text ="#{test2}"></a>
</body>
</html>
Когда я загружаю страницу и печатает model.getAttribute("test2")
в консоль, я получаю нужную строку, а именно «ab c» в качестве тестовой строки. Но «ab c» не отображается в браузере, вместо этого я получаю ??test2_en_US??
. В чем проблема с моим кодом? Как мне заставить его отображать "ab c" в браузере? Кроме того, я попытался использовать аннотацию @RestController
и вернуть model.getAttribute("test2").toString()
, и таким образом я получил «ab c» для отображения в браузере, но не могу заставить его работать с Thymeleaf.