Ich habe ein Problem beim Versuch, mehrere Werte in meiner Vorlage zu verknüpfen. Laut Thymeleaf hier sollte ich einfach in der Lage sein, sie zusammen zu machen ...
4.6 KONKATENIERENDE TEXTE
Texte, unabhängig davon, ob es sich um Literale oder das Ergebnis der Auswertung von Variablen- oder Nachrichtenausdrücken handelt, können mit dem Operator + einfach verkettet werden:
th:text="'The name of the user is ' + ${user.name}"
Hier ist ein Beispiel für das, was ich gefunden habe:
<p th:text="${bean.field} + '!'">Static content</p>
Dies jedoch nicht:
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
Logischerweise sollte dies funktionieren, aber es ist nicht so, was mache ich falsch?
Maven:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
<version>2.0.16</version>
<scope>compile</scope>
</dependency>
So habe ich meine TemplateEngine und TemplateResolver eingerichtet:
<!-- 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>
Antworten:
Aber soweit ich sehe, haben Sie einen recht einfachen Syntaxfehler
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
Die richtige Syntax würde so aussehen
<p th:text="${bean.field + '!' + bean.field}">Static content</p>
Tatsächlich ist die Syntax
th:text="'static part' + ${bean.field}"
gleichth:text="${'static part' + bean.field}"
.Versuch es. Auch wenn dies jetzt nach 6 Monaten wahrscheinlich irgendwie nutzlos ist.
quelle
Sie können viele Arten von Ausdrücken zusammenfassen, indem Sie Ihren einfachen / komplexen Ausdruck zwischen
||
Zeichen umschließen :<p th:text="|${bean.field} ! ${bean.field}|">Static content</p>
quelle
2.1.5
"|${fullName} Stories \| Twiza|"
Ich bekomme Konnte nicht als Ausdruck analysieren.th:class="'hotel listing col organic urgencyMsg available organic h-' + ${record.hotelInfo.hotelId} + '-organic'">
3.0.2
<p>[[${fullName}]] Stories | Twiza </p>
Beachten Sie, dass mit | char, Sie können eine Warnung mit Ihrer IDE erhalten, zum Beispiel bekomme ich eine Warnung mit der letzten Version von IntelliJ. Die beste Lösung ist also, diese Syntax zu verwenden:
th:text="${'static_content - ' + you_variable}"
quelle
Wir können uns so verhalten:
<h5 th:text ="${currentItem.first_name}+ ' ' + ${currentItem.last_name}"></h5>
quelle