gpt4 book ai didi

java - 如何使用 SpEL 处理 Thymeleaf 中的本地化消息

转载 作者:IT老高 更新时间:2023-10-28 13:50:08 26 4
gpt4 key购买 nike

我是 ThymeLeaf 的初学者,除了 @PreAuthorize 外没有过多使用 SpEL注释,所以请帮助我。

我正在使用 ThymeLeaf (版本 2.1.2)连同 Spring (4.0.2.RELEASE) 和 thymeleaf-spring4包(据我所知)replaces the default OGNL scripting with SpEL .

我想要实现的只是将本地化字符串通过 #strings.capitalize 大写。功能。到目前为止,这是我尝试过的:

<h1 th:text="#{retrievable.key}">Text to be replaced</h1>

完美运行并提供预期结果。

现在当我尝试这个时:

<h1 th:text="${#strings.capitalize(#{retrievable.key})}">Text to be replaced</h1>

我得到了以下异常(根本原因,为清楚起见省略其余部分):

org.springframework.expression.spel.SpelParseException:
EL1043E:(pos 21): Unexpected token. Expected 'identifier' but was 'lcurly({)'

好的,好的。只是为了好玩,我省略了大括号并得到了我所期望的:<h1>是空的。

所以现在我认为可能有必要对 retrievable.key 的消息检索进行预处理。以便在 #strings.capitalize 时已对其进行评估被评估。尽管这对我来说似乎违反直觉和不合逻辑,因为这会破坏所有编程规则,但我尝试了这种方法。它也不起作用:使用

${#strings.capitalize(__#retrievable.key__)}

导致

org.thymeleaf.exceptions.TemplateProcessingException:
Could not parse as expression: "#retrievable.key"

并使用

${#strings.capitalize(__#{retrievable.key}__)}

导致(你猜对了)<h1></h1> .

我知道实际问题可以用 CSS 或 JavaScript 解决,但不一定是大写或大写,而是本地化字符串的处理,这是一个例子。

那么我在这里错过了什么?

Thymeleaf 论坛提供的解决方案

ThymeLeaf 论坛的 Zemi 提供了以下内容,elegant solution :

<h1 th:text="${#strings.capitalize('__#{retrievable.key}__')}">Text to be replaced</h1>

请注意单引号。预处理似乎真的意味着 Thymeleaf 中的预处理。

不过,我已经接受了第一个可行的答案。

最佳答案

以下对我有用

<body th:with="message=#{retrievable.key}">
<h1 th:text="${#strings.capitalize(message)}">Text to be replaced</h1>
</body>

关于java - 如何使用 SpEL 处理 Thymeleaf 中的本地化消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22594886/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com