テンプレートで複数の値を連結しようとすると問題が発生します。 Thymeleafによると here 一緒に+できるようになるはずです...
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.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>
| char、IDEで警告を受け取ることができます。たとえば、IntelliJの最後のバージョンで警告を受け取るため、この構文を使用するのが最善の解決策です。
th:text="${'static_content - ' + you_variable}"
このように連結できます:
<h5 th:text ="${currentItem.first_name}+ ' ' + ${currentItem.last_name}"></h5>