У меня есть веб-приложение, которое использует Spring MVC. Я хотел бы, чтобы мой интерфейс состоял всего из одной страницы, которая динамически извлекает все данные как JSON через AJAX. Моя проблема связана с интернационализацией. Когда я обрабатываю содержимое в jsps, я могу использовать теги JSTL для решения своих ключей (супер-легкий с Spring MVC):
<fmt:message key="name"/>: ${name}
<fmt:message key="title"/>: ${title}
<fmt:message key="group"/>: ${group}
При правильной настройке он отображает в финском языке как
Nimi: yay
Otsikko: hoopla
Ryhmä: doo
Теперь, когда я использую json, у меня есть только это, входящее с сервера:
{
name: "yay",
title: "hoopla",
group: "doo"
}
Нет никаких ключей! Но я должен их каким-то образом предоставить. Я рассматривал изменение ключевых слов в их локализованных формах или добавление локализованных ключевых слов в json-выход (например, name_localized = "Nimi" ), но обе эти опции выглядят как плохая практика. Я использую jackson json для автоматического анализа моих объектов домена в json, и мне нравится инкапсуляция, которую он предоставляет.
Единственное возможное решение, которое я придумал, заключается в следующем: динамически создайте файл javascript с локализованными ключевыми именами как переменными.
<script type="text/javascript">
var name="Nimi";
var title="Otsikko";
var group="Ryhmä";
</script>
Как только я загрузился, теперь у меня есть вся информация в javascript для обработки json! Но есть gotcha: мой список имен полей является динамическим. Так что статический рендеринг в jsp будет выглядеть так:
<c:forEach var="field" values="${fields}">
<fmt:message key="${field.key}"/>: ${field.value}
</c:forEach>
Мне нужно найти все сообщения, указанные в моих сообщениях .properties. Spring Интерфейс MessageSource поддерживает только получение сообщений по ключу. Как я могу получить список ключевых слов в моем JSP, который отображает локализованные переменные javascript?