Cyril Dejonghe
Cyril Dejonghe

Reputation: 171

Conditional text in ThymeLeaf : how to do it in plain text?

I understand how th:if works for html templates, but I don't find any clue on how to do it when you expect plain text (use case : plain text e-mail templating).

So far I tried :

<html xmlns:th="http://www.thymeleaf.org" th:inline="text" th:remove="tag">
  Dear [[${contact.firstname}]] [[${contact.lastname}]],
  An alert was triggered at location:  [[${account.address}]] 
  <span th:if=\"${videoLink}\">To view your security camera recordings, please click on [[${videoLink]]</span>
</html>

It works... but the result contains the tag. Any idea of what I'm doing wrong ?

Thanks, Cyril

Upvotes: 6

Views: 7618

Answers (2)

user178982
user178982

Reputation:

Thymeleaf 2.1 has a th:block tag, which is basically a container for attributes. Your conditional text can be done like this:

<th:block th:if="${videoLink}">To view your...</th:block>

Upvotes: 10

Cyril Dejonghe
Cyril Dejonghe

Reputation: 171

It seems that, unlike the th:inline, the th:remove="" is NOT applied to child nodes and has to be added for each tag. Here, if I add it to the tag, the result is what I wanted :

<html xmlns:th="http://www.thymeleaf.org" th:inline="text" th:remove="tag">
  Dear [[${contact.firstname}]] [[${contact.lastname}]],
  An alert was triggered at location:  [[${account.address}]] 
  <span th:if=\"${videoLink}\" th:remove="tag">To view your security camera recordings, please click on [[${videoLink]]</span>
</html>
result :

Dear John Doe,
An alert was triggered at localation: 205 North Michigan Avenue Chicago, IL

To view your security camera recordings, please click on http://www.video.com?id=007   

Upvotes: 3

Related Questions