#java #kotlin #thymeleaf #template-engine
#java #kotlin #thymeleaf #механизм шаблонов
Вопрос:
Я получил такую ошибку, когда попытался использовать выражение предварительной обработки?
Кто-нибудь знает, как разрешить использование выражения предварительной обработки в движке шаблонов Thymeleaf?
Я думаю, что, возможно, я пропустил некоторые конфигурации с движком шаблонов, поэтому он выдал эту ошибку.
Существуют ли какие-либо конфигурации, которые необходимо добавить, чтобы заставить его работать? или какой-либо обходной путь?
Вот примеры HTML-кодов и кодов Thymeleaf, которые я пытался использовать:
<li class="list-item" th:each="item : ${data.getApps(__${ids}__)}">
<a th:text="${item.appName}">App Name</a>
</li>
Вот ошибка:
Caused by: org.springframework.expression.spel.SpelParseException: Expression [data.getApps(__${ids}__)] @27: EL1043E: Unexpected token. Expected 'rparen())' but was 'lcurly({)'
Комментарии:
1. Было бы полезно, если бы вы предоставили фактический код, который вызывает ошибку. Без этого мы не можем сказать, где и почему возникает проблема.
2. @SeverityOne Я добавил код, пожалуйста, взгляните на него. На самом деле, я думаю, что этот код был в порядке, но могут быть некоторые проблемы, о которых я не знаю на стороне сервера.
Ответ №1:
Это помогло бы иметь базовый компонент, из которого извлекаются данные, но вы добавляете бизнес-логику в свою логику представления, что никогда не является хорошей идеей. ${ids}
это какая-то переменная, исходящая из компонента, поэтому я бы создал метод getApps()
, который выглядит следующим образом:
public Collection<App> getApps() {
return getData(getIds());
}
а затем измените свой шаблон Thymeleaf следующим образом:
<li class="list-item" th:each="item: ${apps}">
<a th:text="${item.appName}">App Name</a>
</li>
Пожалуйста, обратите внимание, что я должен угадать, как выглядит Java-код, так что это, скорее всего, будет неточно.