Thymeleaf:访问环境bean

Posted

技术标签:

【中文标题】Thymeleaf:访问环境bean【英文标题】:Thymeleaf: Access Environment bean 【发布时间】:2021-04-08 23:22:51 【问题描述】:

我想访问环境属性:

<h1 th:text="$@environment.getProperty('site.name1')">
                                    <span th:text="$@environment.getProperty('site.name2')"></span>
                                </h1>

但即使 application.property 文件中存在 site.name2,我也没有得到任何东西

这里是我的 application.properties 文件:

spring.h2.console.enabled=true
spring.h2.console.path=/h2-console
spring.h2.console.settings.trace=false
spring.h2.console.settings.web-allow-others=false

site.name1=plats
site.name2=bruts


spring.messages.encoding=UTF-8
spring.thymeleaf.encoding=UTF-8

spring.servlet.multipart.max-file-size=1000MB
spring.servlet.multipart.max-request-size=1000MB
spring.servlet.multipart.enabled=true

server.port=8080

这是使用它的外观:

<h1>Plats
<span class="muellerhoff">Bruts</span>
</h1>

并与:

    <h1>
<span th:text="$@environment.getProperty('site.name1')"></span>
                                        <br/>
<span class="muellerhoff"  th:text="$@environment.getProperty('site.name2')"></span>
</h1>

【问题讨论】:

site.name1 可以,但 site.name2 不行(?!) 您的&lt;h1&gt; 标记中有内容——在本例中为&lt;span&gt; 标记。 &lt;h1&gt; 标签内的所有内容都被 H1 的 th:text 值的结果替换。这就是name2 值消失的原因。整个 &lt;span&gt; 标记被删除。我已经撤回了我的重复投票 - 这不相关 - 对此感到抱歉。 在这些情况下,我喜欢从最终结果开始:您需要最终的 html 看起来像什么?然后你可以从那开始向后工作以创建相关的 Thymeleaf。 【参考方案1】:

最终目标是HTML如下:

<h1>Plats
    <span class="muellerhoff">Bruts</span>
</h1>

在这种情况下,您可以使用&lt;th:block&gt; 来处理name1 值。块标签不会出现在最终的 HTML 中。

<h1> 
    <th:block th:text="$@environment.getProperty('site.name1')"></th:block>
    <span class="muellerhoff" th:text="$@environment.getProperty('site.name2')"></span>
</h1>

关于th:block标签的更多信息可以在here找到。

【讨论】:

以上是关于Thymeleaf:访问环境bean的主要内容,如果未能解决你的问题,请参考以下文章

Thymeleaf 模板引擎简介

Thymeleaf基础语法

SpringBoot——Thymeleaf的表达式

SpringBoot——Thymeleaf的表达式

Thymeleaf 获取当前语言环境

Thymeleaf:无法访问日期