15

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?

BalusC
  • 1,082,665
  • 372
  • 3,610
  • 3,555
AndreaNobili
  • 40,955
  • 107
  • 324
  • 596

3 Answers3

29

#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.

Pradeep Pati
  • 5,779
  • 3
  • 29
  • 43
3

you can do it by

$string.toLowerCase() or $string.toUpperCase()

1

Just adding to Pradeep Pati's point. In case you are using it in the spring boot project where some of your values are coming from messages.properties

like In messages.properties file, You have something like:

email.dailyAlert.greeting.newTemplate = Dear {0},

Then to substitute the value in place of {0} (in the Title case), you need to write like the below line.

<p th:text="#{email.dailyAlert.greeting.newTemplate(${#strings.capitalize(orgSlug)})}"></p>

The final output will be:

Dear Organisation,