当前位置: 首页 > 知识库问答 >
问题:

th:替换不能很好地与th: with在Thymeleaf中工作

洪彬
2023-03-14

根据Thymeleafdocs

片段可以包括任何th:*属性。一旦片段包含到目标模板中(具有th:insert/th:replace属性的模板),将对这些属性进行评估,它们将能够引用在此目标模板中定义的任何上下文变量。

我的碎片

<div th:fragment="link">
    <a th:href="@{${url}}"><span th:inline="text">[[${text}]]</span></a>
</div>

我就是这样把它包括进去的。

<div th:replace="fragments/common :: link" th:with="url='www.google.com', text='Click Me'"></div>

我得到的html

<a href="">
    <span>null</span>
</a>

然而,这同样适用于th: include,并给我以下超文本标记语言。

<a href="www.google.com">
    <span>Click Me</span>
</a>

为什么th:replace不能工作,而th:inlcude可以正常工作?

注意:th:插入超出范围,因为我正在使用Thymeleaf v2.1.5


共有2个答案

饶德元
2023-03-14

似乎是一个类似(不一样)的问题,谢谢这篇文章中提到的问题

作为解决此问题的解决方法,您仍然可以使用th: include,然后使用th:拿下="tag"删除额外的div,类似:

<div th:include="fragments/common :: link" th:with="url='www.google.com', text='Click Me'" th:remove="tag"></div>
贝自怡
2023-03-14

原因是:replace实际上删除了当前标记,因此您丢失了在那里的所有属性,但从片段中获取了所有属性。在你的例子中,这意味着你从未定义过任何在范围内带有变量的th<代码>th:include的工作方式相反。您可以去掉片段标记,但要在布局中定义所有内容。

考虑一下这个片段:

<fragmenttag th:fragment="link" style="background-color: red">...</fragmenttag>

和布局:

<layouttag th:include="fragments/common :: link" style="font-size: 250%;"/>
<layouttag th:replace="fragments/common :: link" style="font-size: 250%;"/>

结果是:

<layouttag style="font-size: 250%;">Some Text</layouttag>
<fragmenttag style="background-color: red">Some Text</fragmenttag>
 类似资料:
  • 我有这段代码Thymeleaf调用Spring上下文并拉入用户ID。 我想把它放在一个现有的th:替换列出的项目中。基本上我需要把静态2替换为url中的当前会话用户ID,我已经尝试了许多选项,但似乎找不到在线解决方案。 我是一个沉香的新手,所以任何帮助都非常感谢,谢谢。 已尝试{*{user.id}} 由:org.thymeleaf.exceptions.templateProcessingExc

  • 您可以看到Android Studio预览经常更新。如果你不想处理各种各样的bug,你最好使用一个稳定的版本。 如果你想使用更多的功能,你应该总是保持最新的版本,以避免错误。

  • 我正在创建一个用户界面,允许用户通过拖放界面创建数据库表(及其字段和关系)。 这是我创建的jsFiddle,尽管它看起来有很多事情要做,但实际上它只是演示问题所需的最低限度。以下是我的要求,jsPlumb很好地单独处理了这些要求,但是当我试图把它们放在一起时,我会遇到问题。特别是,它将#2和#3结合在一起是一个问题。 表格可以在画布上拖动(使用jsPlumb.draggable()) 表中的字段可

  • 我有一个基本的 VPC,其中包含两个运行 Apache 的 Linux EC2 实例,它们位于经典 ELB 后面。 我想从web应用程序中使用DynamoDB,这要求EC2实例具有出站互联网访问,因为DynamoDBendpoint无法通过后端获得。 我正在使用 ELB 来避免将公有 IP 附加到 EC2 实例,因此我宁愿不附加它们,以便可以访问 DynamoDB。 在这一点上,我被卡住了。 我设

  • 问题内容: 我浏览了一些帖子,并且阅读了多个JPA不支持接口的地方。有人可以分享真实项目中的含义吗?这是否意味着我们无法为接口添加注释? 问题答案: 这意味着您不能在接口上进行映射(注释)或查询。您只能查询@Entity类,并且只能将它们放在真实类中,而不能放在接口上。通常这不是问题,接口没有状态,因此在大多数情况下与持久性没有真正关系。您仍然可以在模型中使用接口,只是不能直接映射它们。 如果您有

  • 我正在使用SpringMVC和Thymeleaf。我的模板在表单标记处如下所示: 它的作品,但没有。我非常喜欢这个(非常简单),但是我没有找到任何关于这个的解释。 没有th:action和th:object它是如何工作的?