如何在Thymeleaf页面中将字符串转换为大写?

15
我正在开发一个使用Thymeleaf作为模板引擎的Spring MVC应用程序,并且我想将页面中显示的某些字符串大写。在我的页面上,我有类似以下的内容:
<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>

正如您在前面的代码中所看到的,在第一个<span>标签中,我展示了menuItem对象的desFnz属性内的字符串。

它可以正常工作,但我的问题是我想将所有字符都大写,所以我尝试做:

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

我使用了#strings.capitalize()但它不起作用,实际上在我的页面中我仍然得到了未大写的文本。为什么?我错过了什么?如何解决这个问题?


你使用的是哪个版本的 Thymeleaf? - Zakaria
@Zakaria 我正在使用 ThymeLeaf 的 2.1.4.RELEASE 版本。 - AndreaNobili
2
你正在使用类和样式属性。因此,作为最后的选择,你仍然可以通过添加 text-transform: uppercase; 将其留给 CSS。 - MyBrainHurts
3个回答

30

#strings.capitalize(menuItem.desFnz)仅会将第一个字符变成大写,而#strings.toUpperCase(menuItem.desFnz)会将整个字符串转换为大写。 这里是Strings类的文档。


4
你可以通过 $string.toLowerCase() 或者 $string.toUpperCase() 来实现。

1

仅是在Pradeep Pati的观点上补充一点。

如果您正在使用Spring Boot项目,其中一些值来自messages.properties

就像在消息属性文件中,您有这样的内容:

email.dailyAlert.greeting.newTemplate = 亲爱的{0},

那么为了替换{0}(在Title case中),您需要编写以下行。

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

最终输出将是:

亲爱的组织,



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接