当前位置: 首页 > 面试题库 >

如何定义胸腺嘧啶片段

谭研
2023-03-14
问题内容

使用“模板修饰而不是包含”技术时,如何检查Thymeleaf片段是否已定义?

在以下 template.html 示例中,我只希望在定义片段时呈现script标签

<html th:fragment="page" xmlns:th="...">
  ...
  <div class="container" th:include="this :: content"></div>
  <script th:include="this :: script"></script>
  ...
</html>

但是在我的使用上面模板的 index.html 中,没有定义脚本片段,但是script标签仍然会渲染

<html th:include="template :: page">
  ...
  <div th:fragment="content">
    ...
  </div>
</html>

我尝试过th:if="#{this :: script}"但没有运气


问题答案:

我在Thymeleaf玩了一点(…),这是我的结论。

在下文中,我将使用tag任何给定的标签(divscriptspan等)和fragment可接受的片段语法(this :: scriptthis :: contenttemplate :: #menu等)

当您使用时<tag th:include="fragment"/>,Thymeleaf始终会生成一个<tag>...</tag>。如果不存在,则内容为空<tag></tag>。如果片段存在,则内容变为片段的内容。例如<div th:"other :: #foo/>用于片段<p id="foo">bar</p>给出<div>bar</div>

当您使用时<tag th:replace="fragment"/>,Thymeleaf尝试将其替换为完整的片段,包括标记。有以下特殊情况:

  • 如果该片段不存在,则Thymeleaf不会插入任何内容
  • 如果片段由a标识th:fragment="id",则Thymeleaf会删除th:fragment(例如:<p th:fragment="foo">bar</p>gives <p>bar</p>,无论tag是什么)。
  • 如果片段是由dom元素标识的,则Thymeleaf保留dom元素(例如:<p id="foo">bar</p>gives <p id="foo">bar</p>,无论tag是什么)

因此,如果您只想在<script>片段存在时就包含该片段,则只需通过<script th:fragment ...>...</script>其存在来对其进行标识,并通过以下方式将其包含在布局中:

<script th:replace="this :: script"/>


 类似资料:
  • 这是我的模板示例: 我收到了以下异常消息: 知道吗?

  • 我想知道是否可以做一个th:每个都有排他性 我是说。。。例如我们的数据库中有三个状态和模型{FREE,RESERVED,take}(Enum)。 我想做一个th:除了一个之外,每个状态都是这样的(在数据库中为特定对象选择的状态,我不想选择一个已经执行的选项) 除了我刚刚发明的这个例子之外,还有什么类似的东西吗? 所以我可以在这个上下文中使用它: 我知道我可能可以在控制器中执行此操作,但我想知道是否

  • 我使用thymeleaf分割我的模板在头/主/脚部分。为了在一些页面上包含样式表和javascript(但不是在其他页面上),我使用了这里解释的片段表达式。 所以我的头。html看起来像: 例如,在我的主页中使用了索引。html格式如下: 这工作正常。脚本和链接标记显示在结果页面的标题中。不过,偶尔我希望在正文的末尾有脚本(就在

  • 我想使用一个模板片段创建一个最多包含三个项目的列表。无论是否有项目,都将始终显示项目的三个空格,因此看起来是这样的。 但是,即使语句的计算结果为false,且列表为空,它仍会尝试执行'th:include语句,从而导致以下错误: 如何让if语句优先于片段执行?

  • 我想做一些像 在百里香叶中。我知道有一个价值观,我要做的就是 如何在Thyemleaf的select选项中传递两个值。

  • 我的PDF包含一个文本形式的带有连字符符号的URL。当我通过标记直接从PDF复制URL时,当连字符位于行的末尾时,符号在粘贴后消失。 我有以下html: 但复制粘贴后,我得到的url没有连字符:https://sec2mms.hansatonich.at/test.t.ozkq/ 我错过了什么?