Reputation: 1821
I'm new in thymeleaf and I try to create a template. My problem is this code:
<h1 th:text="${header.title}" >
title
<small th:text="${header.subtitle}" >Subtitle</small>
</h1>
I would like to get this output:
<h1> TITLE <small> SUBTITLE</small> </h1>
But this is the real output:
<h1> TITLE </h1>
How can I do it, so it does not remove what is inside of "small"?
Upvotes: 78
Views: 161911
Reputation: 1922
Regardless of the semantics of tags, the correct answer is this one:
<h1>
<span th:text="${header.title}" th:remove="tag">title</span>
<small th:text="${header.subtitle}" >Subtitle</small>
</h1>
In this way Thymeleaf removes the <span>
tag and the result is what you expect:
<h1>
TITLE
<small>SUBTITLE</small>
</h1>
Upvotes: 16
Reputation: 2454
in addition to @Faraj response, you can also use th:block
like this
<h1>
<th:block th:utext="${header.title}"/>
<small th:text="${header.subtitle}" >Subtitle</small>
</h1>
Upvotes: 6
Reputation: 14885
I faced the same problem. The answer is th:inline='text'
This should solve your issue
<h1 th:inline="text" >
[[${header.title}]]
<small th:text="${header.subtitle}">Subtitle</small>
</h1>
or you can also use th:remove="tag"
<h1>
<span th:text="${header.title}" th:remove="tag">title</span>
<small th:text="${header.subtitle}" >Subtitle</small>
</h1>
Upvotes: 192
Reputation: 583
I'm not sure what you are trying, since the small
tags in your h1
will not appear small. The Thymeleaf th:text
tag will replace all the text in your h1
tag, that is the reason your output only shows "TITLE". You should place the <small>
tags outside your h1
tag.
<h1 th:text="${header.title}">title</h1>
<small th:text="${header.subtitle}">Subtitle</small>
And I believe you are looking for this answer:
<h1>
<span th:text="${header.title}" th:remove="tag">title</span>
<small th:text="${header.subtitle}">Subtitle</small>
</h1>
Upvotes: 2