Vaadin 一对多和网格 binding.Property 未找到

Vaadin one to many and Grid binding.Property not found

Customer 实体与实体 Address 具有一对多关系,因此 List<Address> getAddress 在 Customer.Address 中有一个 Email 字段。

例如,要从第一个客户那里收到一封电子邮件,您可以 customer.getAddress.get(0).getEmail

当我绑定到 Customer.class 网格时,setColumns("customerid","address.email") 会抛出异常 属性 未找到。

如果我执行 addColumn(customer->customer.getAddress.get(0).get email).setHeader(email) 它会显示电子邮件。

但这是第一个 customer.How 为所有客户做同样的事情吗?

List 的默认演示文稿是 toString()。您需要创建一个渲染器来很好地显示列表。为了获得更好的性能,您可以创建 LitRenderer. See also the Lit documentation for repeating templates.

grid.addColumn(LitRenderer.<Customer>of("""
        ${item.address.map((adr) => 
            html`<span>${adr.email}</span><br />`
        )}
        """).withProperty("address", Customer::getAddress));

看起来像这样:

也许可以将 span 元素替换为 <a href="mailto:${adr.email}">${adr.email}</a> 以获得更好的用户体验。