Process thymeleaf variable as html code and not text

JavaThymeleaf

Java Problem Overview


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 "n" variable and be processed as html code instead of it being encoded as text?

Java Solutions


Solution 1 - Java

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>

Solution 2 - Java

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>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAlexandru SeverinView Question on Stackoverflow
Solution 1 - Javamichal.kreuzmanView Answer on Stackoverflow
Solution 2 - Javamichal.jakubeczyView Answer on Stackoverflow