【问题标题】:how to include an element ONLY when it's not rendered with Thymeleaf?如何仅在未使用 Thymeleaf 渲染时才包含元素?
【发布时间】:2021-07-23 13:31:02
【问题描述】:

我们的 Angular 应用程序可以通过 Spring Boot 和“ng serve”(主要用于开发目的)提供服务。在第一种情况下,它的 index.html 是用 Thymeleaf 渲染的,而在后一种情况下则不是。

我需要包含一个<script>,它在第一种情况下将src作为url A(一个prod脚本,当通过Thymeleaf提供时)和在第二种情况下的url B(开发链接)..

想不出办法。我可以的

<script th:src='url-A'></script>
<script src='url-B'></script>

这对于“开发”部署(没有 Thymeleaf)是可以的,但是当它与 Thymeleaf 一起提供时,两个元素都将被渲染并由浏览器处理,我想避免这种情况..

我想知道是否有任何结构可以让我在模板中包含 something,当 Thymeleaf 不处理它时,它是一个安全有效的 HTML; AND 在 ? 时被渲染为 nil(空字符串)?

【问题讨论】:

  • 似乎 'th:unless' 可以解决问题;需要测试..

标签: javascript html thymeleaf


【解决方案1】:

有几种简单的方法可以做到这一点。最简单的方法是简单地包含一个th:src 和一个src。 Thymeleaf 在 SpringBoot 中渲染时将覆盖静态 src(通过ng serv 提供服务时它将被单独保留)。

<script src="url-B" th:src="url-A"></script>

您也可以使用th:remove 属性。

<script th:src="url-A"></script>
<script src="url-B" th:remove="all"></script>

【讨论】:

  • 酷!我已经来提供我自己的“答案”(我确认 th:unless="false" 也可以解决问题)。但我更喜欢第一个解决方案
猜你喜欢
  • 2022-01-06
  • 2022-01-02
  • 2011-01-22
  • 2015-10-27
  • 2012-12-13
  • 2018-06-07
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
相关资源
最近更新 更多