У меня проблема при попытке объединить несколько значений в моем шаблоне. Согласно Thymeleaf здесь я просто смогу + их вместе ...
4.6 СОЕДИНЕНИЕ ТЕКСТОВ
Тексты, независимо от того, являются ли они литералами или результатом вычисления переменных или выражений сообщений, можно легко объединить с помощью оператора +:
th:text="'The name of the user is ' + ${user.name}"
Вот пример того, что я нашел, работает:
<p th:text="${bean.field} + '!'">Static content</p>
Однако это не так:
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
По логике, это должно работать, но это не так, что я делаю не так?
Maven:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
<version>2.0.16</version>
<scope>compile</scope>
</dependency>
Вот как я настроил свои TemplateEngine и TemplateResolver:
<!-- Spring config -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ClassLoaderTemplateResolver">
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="order" value="1"/>
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
<property name="templateResolver" ref="fileTemplateResolver"/>
<property name="templateResolvers">
<list>
<ref bean="templateResolver"/>
</list>
</property>
ThymeleafTemplatingService:
@Autowired private TemplateEngine templateEngine;
.....
String responseText = this.templateEngine.process(templateBean.getTemplateName(), templateBean.getContext());
AbstractTemplate.java:
public abstract class AbstractTemplate {
private final String templateName;
public AbstractTemplate(String templateName){
this.templateName=templateName;
}
public String getTemplateName() {
return templateName;
}
protected abstract HashMap<String, ?> getVariables();
public Context getContext(){
Context context = new Context();
for(Entry<String, ?> entry : getVariables().entrySet()){
context.setVariable(entry.getKey(), entry.getValue());
}
return context;
}
}
<p th:text="${'__${bean.property1}__' + '::' + '__${bean.property2}__'}">default text</p>
Ответы:
Но из того, что я вижу, у вас довольно простая синтаксическая ошибка
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
правильный синтаксис будет выглядеть как
<p th:text="${bean.field + '!' + bean.field}">Static content</p>
По сути, синтаксис
th:text="'static part' + ${bean.field}"
равенth:text="${'static part' + bean.field}"
.Попробуйте сами. Хотя сейчас, вероятно, через 6 месяцев это бесполезно.
источник
Вы можете объединить множество видов выражений, заключив простое / сложное выражение между
||
символами:<p th:text="|${bean.field} ! ${bean.field}|">Static content</p>
источник
2.1.5
"|${fullName} Stories \| Twiza|"
Я получаю Не могу разобрать как выражение.th:class="'hotel listing col organic urgencyMsg available organic h-' + ${record.hotelInfo.hotelId} + '-organic'">
я использую3.0.2
<p>[[${fullName}]] Stories | Twiza </p>
Обратите внимание, что с | char, вы можете получить предупреждение с помощью своей IDE, например, я получаю предупреждение с последней версией IntelliJ, поэтому лучшее решение - использовать этот синтаксис:
th:text="${'static_content - ' + you_variable}"
источник
Мы можем объединить вот так:
<h5 th:text ="${currentItem.first_name}+ ' ' + ${currentItem.last_name}"></h5>
источник