短版
使用Spring时,如何在Thymeleaf中创建嵌套模板?Spring中的th:object
属性中似乎不支持星号符号(“*{mailingAddress}”
)。是否有变通/不同的标签可供使用?
长版本
例如,假设我有以下课程:
class Address { String street; }
class Person { Address mailingAddress; Address shippingAddress; }
class Order { int orderNo; Person customer; }
所以我做了一个地址。html
Thymeleaf模板:
<span th:text="*{street}"></span>
我们用一个样本地址
来测试它。看起来不错。
我做了一个
person.html
Thymeleaf模板,引用这样的地址:
<span th:text="*{firstName}"></span>
<span th:object="${person.shippingAddress}">
<span th:include="fragments/address :: address"></span>
</span>
我们用一个例子来测试它。我甚至可以引用相同的模板,并将上下文设置为
${person.mailingAddress}
。到现在为止,一直都还不错。
现在让我们制作
订单
模板。只是,嘿,等等。前面,在我们的人物中。html
文件我们说的是${person.shippingAddress}
,但现在我们需要它说${order.customer.shippingAddress}
。如果我没有使用Spring,我会将以下内容放入person中。html
:
<span th:text="*{firstName}"></span>
<span th:object="*{shippingAddress}">
<span th:include="fragments/address :: address"></span>
</span>
这样,不管我到达这里的路径是什么,我所要关心的就是我当前的上下文有一个
shipping地址
。然后,我可以直接使用person.html
,也可以在我的order.html
模板中使用。
不幸的是,我在Spring,所以我得到以下例外:
org.thymeleaf.exceptions.TemplateProcessingException:
The expression used for object selection is *{shippingAddress},
which is not valid: only variable expressions (${...}) are
allowed in 'th:object' attributes in Spring-enabled environments.
(include:510)
at org.thymeleaf.spring4.processor.attr.SpringObjectAttrProcessor.validateSelectionValue(SpringObjectAttrProcessor.java:73)
at org.thymeleaf.standard.processor.attr.AbstractStandardSelectionAttrProcessor.getNewSelectionTarget(AbstractStandardSelectionAttrProcessor.java:69)
at org.thymeleaf.processor.attr.AbstractSelectionTargetAttrProcessor.processAttribute(AbstractSelectionTargetAttrProcessor.java:61)
若要继续,我必须复制所有嵌套模板。在这个例子中,我将有一个
人。html
withth:object=“${person.mailingAddress}”
调用地址。html
,以及一份person的副本。html
调用orderCustomer。html
其中我们将行更改为th:object=“${order.customer.mailingAddress}”
,但在其他方面是相同的。
有没有一种方法可以让我重复使用模板?
您可以向github中的thymeleaf开发人员报告一个bug,或者通过项目添加此功能并说服Daniel Fernández接受它。
https://github.com/thymeleaf/thymeleaf/issues
否则,他在StackOverflow中可用。您只需向他发送一条消息,说明集成此功能的可能性
https://stackoverflow.com/users/550664/daniel-fern安德斯
除此之外,我们没有什么可以做的,而是坚持将th:object=“${person.mailingAddress}”和
th:object=“${order.customer.mailingAddress}”放在每次导入之外的方法。
我正在使用Spring Boot和Thymeleaf为我的应用程序创建一个登录页。为此,我需要呈现所有包含容器的主机对象的列表。以下是相关代码: 现在,我想遍历所有服务器,并在表中显示关于每个容器的信息。我的Thymeleaf模板如下所示: 我的问题是访问容器属性的部分(由注释标记)。每次我都会得到一个SpringEL异常。如果我删除并将其替换为会显示容器的String版本,因此我可以访问对象和它
但是,我必须验证manager和operator的id是否有效,也就是说,我将验证user表中是否有匹配的id。 所以我想知道如何实现这种验证? 更新1:使用验证器
我有一个使用Hibernate/JPA的持久性Spring Boot应用程序。 我正在使用事务来管理我的数据库持久性,并且我正在使用注释来定义应该以事务方式执行的方法。 在持久化时,我有三个主要的事务粒度级别: 要保留的实体批次 要保留的单个实体 保留实体的单一数据库操作 因此,在考虑整个持久性流量时,您可以想象我有三个级别的嵌套事务。 第2层和第3层之间的交互如我所愿透明地工作,因为在没有为事务
所以我想构建一个具有以下结构的项目: 现在,模块1和模块2是模块3的依赖项。 问题1:这种方法是错误的吗? 问题2:当我实现这个时,项目的封装结构为父pom和模块1的pom,而模块1、模块2和模块3的子模块的封装结构为jar。现在,当我运行mvn clean install时,我得到以下错误:
了解如何在 Dreamweaver 中创建用于控制共享设计元素的页面中的内容的嵌套模板。 嵌套模板是指其设计和可编辑区域都基于另一个模板的模板。嵌套模板对于控制共享许多设计元素的站点页面中的内容很有用,但在各页之间有些差异。例如,基本模板中可能包含更宽广的设计区域,并且可以由站点的许多内容提供者使用,而嵌套模板可能进一步定义站点内特定部分的页面中的可编辑区域。 基本模板中的可编辑区域被传递到嵌套模
本文向大家介绍SpringBoot中的Thymeleaf模板,包括了SpringBoot中的Thymeleaf模板的使用技巧和注意事项,需要的朋友参考一下 一、前言 Thymeleaf 的出现是为了取代 JSP,虽然 JSP 存在了很长时间,并在 Java Web 开发中无处不在,但是它也存在一些缺陷: 1、JSP 最明显的问题在于它看起来像HTML或XML,但它其实上并不是。大多数的JS