JohnPortella
JohnPortella

Reputation: 1821

Thymeleaf th:text - Put a text without removing HTML structures

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

Answers (4)

Emiliano Schiano
Emiliano Schiano

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

rvazquezglez
rvazquezglez

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

Faraj Farook
Faraj Farook

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

Michiel Bijlsma
Michiel Bijlsma

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

Related Questions