Reputation: 6228
I'm using Thymeleaf to process html templates, I understood how to append inline strings from my controller, but now I want to append a fragment of HTML code into the page.
For example, lets stay that I have this in my Java application:
String n="<span><i class=\"icon-leaf\"></i>"+str+"</span> <a href=\"\"></a>\n";
final WebContext ctx = new WebContext(request, response,
servletContext, request.getLocale());
ctx.setVariable("n", n);
What do I need to write in the HTML page so that it would be replaced by the value of the n
variable and be processed as HTML code instead of it being encoded as text?
Upvotes: 102
Views: 95291
Reputation: 37
Staring with Thymeleaf 3.0 the html friendly tag would be:
<div class="mailbox-read-message" data-th-utext="*{body}">
Upvotes: 0
Reputation: 9469
If you want short-hand syntax you can use following:
[(${variable})]
Escaped short-hand syntax is
[[${variable}]]
but if you change inner square brackets [
with regular (
ones HTML is not escaped.
Example within tags:
<div>
[(${variable})]
</div>
Upvotes: 21
Reputation: 12390
You can use th:utext
attribute that stands for unescaped text (see documentation). Use this with caution and avoid user input in th:utext
as it can cause security problems.
<div th:remove="tag" th:utext="${n}"></div>
Upvotes: 168