Вариант использования: системный администратор сохраняет шаблон Freemarker в базе данных, которая используется (API REST Spring Boot) для представления информации, хранящейся пользователями системы (респондентами), с учетом локали, другому типу пользователя (рецензенту).
Ответ респондента может храниться в объекте такого типа (или в списках объектов такого типа, если ожидается, что вопрос, заданный респонденту, будет иметь несколько ответов):
// snip
import com.fasterxml.jackson.databind.node.ObjectNode;
// more imports snipped
public class LanguageStringMap {
private Map<Language, String> languageStringMap;
public LanguageStringMap(ObjectNode languageMapNode) {
// snip of code instantiating a LanguageStringMap from JSON
}
public void put(Language language, String value) {
if (value.length() == 0)
throw new IllegalArgumentException(String.format(
"value for language '%s' of zero length", language.getCode()));
languageStringMap.put(language, value);
}
public String get(Language language) { return languageStringMap.get(language); }
}
То, что я хочу сделать, это написать ObjectWrapper, который отображает экземпляры LanguageStringMap
в строку (полученную путем вызова метода get()
с языком, полученным из Locale, запрошенного обозревателем рецензента и установленным в шаблоненастройки). Это обеспечивает более удобный пользовательский интерфейс для системного администратора, чем если бы загруженный шаблон содержал кучу вызовов методов шаблона.
Для этого моей оболочке объекта необходимо получить доступ к настройке шаблона. Я просмотрел соответствующую документацию Freemarker , но мне все еще неясно, как это сделать или возможно ли это.
Я думаю, что было бы ошибкой пытаться реализовать это с помощьюпакеты ресурсов загружаются в базу данных вместе с шаблонами, но это соображение.