Разрешение шаблона из ресурсов / шаблонов _and_ string - PullRequest
0 голосов
/ 29 октября 2019

В моем приложении мне нужно использовать «зашитые» html-шаблоны, которые я запеку, добавив их в resources/templates и «динамические» текстовые шаблоны, которые я хочу сохранить в String s во время выполнения.

Мой код выглядит примерно так:

@Autowired
SpringTemplateEngine templateEngine;

templateEngine.addTemplateResolver(new DynamicTemplateResolver());

Context context = new Context();
context.setVariable("foo1", ... );

templateEngine.process("eitherStaticOrDynamic", context, output);

Проблема заключается в DynamicTemplateResolver, который реализует ITemplateResolver. Я попытался использовать примеры, приведенные в Шаблоны строк процесса с помощью thymeleaf 3 , но, похоже, они больше не работают в текущих версиях Spring.

Как можно разрешить шаблон из Stringс? Я использую Spring Boot 2.2

1 Ответ

0 голосов
/ 29 октября 2019

Я думаю, я нашел решение. Моя ошибка была основана на недоразумении. Thymeleaf предоставляет StringTemplateResolver с этим javadoc:

... Этот распознаватель шаблонов будет рассматривать разрешенный шаблон как сам шаблон, то есть его содержимое. Поэтому внешний файл или ресурс не будут доступны. ...

В этом комментарии скрыт (по крайней мере для меня) тот факт, что вместо поиска шаблонов name данная строка считается шаблоном . Это означает, что если вы предоставите foo = [(${foo})], это не будет рассматриваться как шаблон, который нужно искать по имени, а вместо этого будет рассматриваться как (в данном случае: текст) шаблон!

Это и изменение моего кода на этоРешил проблему для меня:

StringTemplateResolver tr = new StringTemplateResolver();
tr.setTemplateMode(TemplateMode.TEXT);

Без этой настройки мой шаблон не был разрешен, потому что шаблоны текстового режима следуют другому синтаксису, чем шаблоны HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...