Пример:
Код: Выделить всё
public Optional process(String template, Map model) {
Context thymeleafContext = new Context();
thymeleafContext.setVariables(model);
try {
return Optional.of(templateEngine.process(template, thymeleafContext););
} catch (TemplateProcessingException e) {
log.error(e.getMessage());
}
return Optional.empty();
}
Предположим, у меня есть такой шаблон: Год рождения: [[${bornYear}}]]. Теперь мне нужно привести значение переменнойbornYear к определенному шаблону. Для этой цели у меня есть такой полезный метод
Код: Выделить всё
public class Utils {
private Utils() {}
public static String cast(String source, String pattern) {
return "";
}
}
Что я пробовал:
- Год рождения шаблона: [[${Utils.cast(bornYear, 'dd-MM-yyyy')}]].
- Год рождения шаблона: [[${T (com.example.Utils).cast(bornYear, 'дд-ММ-гггг')}]]. Это приводит к org.thymeleaf.Exceptions.TemplateProcessingException: создание экземпляров новых объектов и доступ к статическим классам или параметрам запрещены в этом контексте.
- Определите Utils как Spring Bean и настройте шаблон таким образом: Год рождения: [[${utils.cast(bornYear, 'dd-MM-yyyy')}]] или Год рождения: [[${@utils.cast(bornYear, 'дд-ММ-гггг')}]]. Это приводит к ошибке: Вызвано: org.springframework.expression.spel.SpelEvaluationException: EL1057E: в контексте не зарегистрирован преобразователь bean-компонента для разрешения доступа к bean-компоненту «Utils».
Код: Выделить всё
@Bean
public ClassLoaderTemplateResolver templateResolve() {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("templates/");
templateResolver.setSuffix(".txt");
templateResolver.setTemplateMode(TemplateMode.TEXT);
templateResolver.setCharacterEncoding("UTF-8");
templateResolver.setOrder(1);
templateResolver.setCheckExistence(true);
return templateResolver;
}
[*]Можно ли вызвать собственный код, учитывая, что я использую TemplateMode.TEXT?
[*]Если да, то как это сделать правильно?
[*]Есть предложения?
Заранее спасибо!
Подробнее здесь: https://stackoverflow.com/questions/792 ... f-template
Мобильная версия