How can I capitalize a string showed by Thymeleaf into a page?

AndreaNobili picture AndreaNobili · Mar 15, 2016 · Viewed 18.7k times · Source

I am working on a Spring MVC application that uses Thymeleaf as template engine and I am trying to capitalize some string showed into my page. On my page I have something like this:

<li class="com__nav-item" th:each="menuItem : ${#authentication.principal.listaFunzioniUtente}">
    <a href="" class="com__nav-link centered">
        <span class="blue-line animate scaleIn delay-3" style="font-size: 1.4em; text-align: center;" th:text="${#strings.capitalize(menuItem.desFnz)}"></span>
        <span class="white-circle animate scaleIn delay-5"></span>
    </a>
</li>

As you can see in the previous code, in the first <span> tag, I show a string inside the desFnz property of the menuItem object.

It works fine, my problem is that I want capitalize all the characters, so I tried to do:

th:text="${#strings.capitalize(menuItem.desFnz)}"

using the #strings.capitalize() but it can't work, in fact in my page I still obtain the text but not capitalized. Why? What am I missing? How can I fix this issue?

Answer

Pradeep Pati picture Pradeep Pati · Mar 15, 2016

#strings.capitalize(menuItem.desFnz) will only capitalize the 1st character, where as #strings.toUpperCase(menuItem.desFnz) will convert the entire string to uppercase. Here is the documentation for the Strings class.