为什么Thymeleaf代码在HTML的head部分不起作用,但在正文中工作正常

时间:2016-06-01 07:54:23

标签: java html spring-boot thymeleaf wro4j

我正在使用wro4j来缩小静态内容。但是,当我在我的开发环境中时,我想使用我的JS和CSS文件的未压缩版本。

为了说明问题,我使用的是Spring Boot和Thymeleaf。

此代码在我的HTML的<head></head>内无效:

<th:block th:if="${@environment.getActiveProfiles()[0] != 'development'}">
    <link th:href="@{/wro4j/compressed.css}" rel="stylesheet"></link>
</th:block>
<th:block th:if="${@environment.getActiveProfiles()[0] == 'development'}">
    <link th:href="@{/css/uncompressed.css}" rel="stylesheet"></link>
</th:block>

我在上面的代码中看到的HTML源代码是:

<link rel="stylesheet" href="/wro4j/compressed.css" />

<link rel="stylesheet" href="/css/uncompressed.css" /> 

当然,唯一应该包含的css是uncompressed.css,因为我已将我的个人资料设置为&em; application.yml&#39;

中的 development

但是,如果我要在<body></body>中执行以下操作,它会像我期望的那样完美地工作:

<th:block th:if="${@environment.getActiveProfiles()[0] == 'development'}">
    <div th:text="${@environment.getActiveProfiles()[0]}"></div>
</th:block>
<th:block th:if="${@environment.getActiveProfiles()[0] != 'development'}">
    <div th:text="'WHAT THE HECK!' + ${@environment.getActiveProfiles()[0]"></div>
</th:block>

application.yml中将我的弹簧配置文件设置为 development ,我希望从后一个块中看到的是&#34;开发&#34;而不是&#34;检查什么!发展&#34;这正是我所看到的。那么为什么相同的代码在我的HTML的head部分中的表现不如我所期望的那样。

我错过了什么?

1 个答案:

答案 0 :(得分:1)

感谢@ Boris对我的问题的评论,解决方案是使用Thymeleaf版本3.但是作为一种解决方法,这是我暂时所做的:

<link th:if="${@environment.getActiveProfiles()[0] != 'development'}"  th:href="@{/wro4j/all.css}" rel="stylesheet" />

<script  th:if="${@environment.getActiveProfiles()[0] == 'development'}" th:src="@{/bootstrap/js/bootstrap.min.js}"></script>