J'ai un problème en essayant de concaténer de multiples valeurs dans mon modèle . Selon Thymeleaf ici je devrais simplement pouvoir les + ensemble ...
4.6 TEXTES CONCATENANTS
Les textes, qu’ils soient littéraux ou le résultat de l’évaluation de la variable ou du message expressions, peuvent être facilement concaténées à l’aide de l’opérateur +:
th:text="'The name of the user is ' + ${user.name}"
Voici un exemple de ce que j'ai trouvé fonctionne:
<p th:text="${bean.field} + '!'">Static content</p>
Ceci cependant ne:
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
Logiquement, cela devrait fonctionner mais ce n'est pas le cas, qu'est-ce que je fais mal?
Maven:
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring3</artifactId>
<version>2.0.16</version>
<scope>compile</scope>
</dependency>
Voici comment j'ai configuré mon TemplateEngine et mon 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;
}
}
Mais de ce que je vois, vous avez une assez simple erreur de syntaxe
<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>
la syntaxe correcte ressemblerait à
<p th:text="${bean.field + '!' + bean.field}">Static content</p>
En fait, la syntaxe th:text="'static part' + ${bean.field}"
est égale à th:text="${'static part' + bean.field}"
.
Essaye le. Même si cela est probablement inutile maintenant après 6 mois.
Vous pouvez concattre de nombreux types d’expression en entourant votre expression simple/complexe entre les caractères ||
:
<p th:text="|${bean.field} ! ${bean.field}|">Static content</p>
Notez que avec | char, vous pouvez obtenir un avertissement avec votre IDE, Par exemple, je reçois un avertissement avec la dernière version d'IntelliJ, La meilleure solution consiste donc à utiliser cette syntaxe:
th:text="${'static_content - ' + you_variable}"
Nous pouvons concatter comme ceci:
<h5 th:text ="${currentItem.first_name}+ ' ' + ${currentItem.last_name}"></h5>