使用“模板修饰而不是包含”技术时,如何检查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
任何给定的标签(div
,script
,span
等)和fragment
可接受的片段语法(this :: script
,this :: content
,template :: #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尝试将其替换为完整的片段,包括标记。有以下特殊情况:
th:fragment="id"
,则Thymeleaf会删除th:fragment
(例如:<p th:fragment="foo">bar</p>
gives <p>bar</p>
,无论tag
是什么)。<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/ 我错过了什么?