Thymeleaf使用Spring框架 SelectedValueComparator.isSelected
比较值(用于在选项html中包含selected =“
selected”标记),该框架固有地首先依赖于Java相等性。如果失败,则返回两个值的字符串表示形式。以下是其文档摘录
用于测试候选值是否与数据绑定值匹配的实用程序类。急于尝试通过多种途径来证明比较,以解决实例不平等,逻辑(基于字符串表示)的相等性和基于PropertyEditor的比较等问题。
提供了全面的比较数组,集合和映射的支持。
平等合约
对于单值对象,平等首先使用标准Java平等进行测试。因此,用户代码应努力实现Object.equals以加快比较过程。如果Object.equals返回false,则尝试进行详尽的比较,目的是证明平等而不是证明平等。
接下来,尝试比较候选值和绑定值的String表示形式。在许多情况下,由于在向用户显示两个值时都将其表示为字符串,因此这可能会导致结果为true。
接下来,如果候选值为字符串,则尝试将绑定值与将对应的PropertyEditor应用于候选的结果进行比较。该比较可以执行两次,一次是针对直接的String实例,然后是第一次的比较结果为false时,针对字符串表示形式。
对于您的特定情况,我会记下转换服务,以便将我的part对象转换为字符串,如http://www.thymeleaf.org/doc/html/Thymeleaf-
Spring3.html#configuring-a-中针对VarietyFormatter所述。
conversion-service。发布此内容后,我将使用th:value =“ $
{part}”并让SelectedValueComparator做到比较对象的神奇,并在html中添加selected =“ selected”部分。
同样在我的设计中,我总是基于主键实现equals方法(通常是在所有其他实体都从其继承的顶级抽象实体上执行)。这进一步增强了整个系统中域对象的自然比较。您是否在设计中做类似的事情?
希望能帮助到你!!



