我的TreeGid
组件显示了图片和产品之间的关系。图像和产品对象之间的关系是n:m(参见下面的简化示例,产品60148971链接到至少两个图像)。
当用户选择产品时(参见示例),了解其父节点非常重要。我们需要来自UI模型的此信息,因为该产品可以包含多个父级。据我了解,这在Vaadin 8.1+中是不可能的。谁能证实这一点?
我目前的解决方案是使用简单的Link
个对象作为节点,此对象包含对图像和产品的引用。有关用法,请参阅代码段(非常简化,只是为了得到这个想法)。
@Override // from HierarchicalDataProvider
public Stream<HasTitle> fetchChildren(final HierarchicalQuery hq) {
HasTitle item = hq.getParent();
...
} else if (item instanceof Product) {
final Product p = (Product)item;
return p.getImages().stream()
.map(img -> new Link(p, img));
...
}
但是,我认为这是一个黑客攻击。因此,如果有更有效的方法,请告诉我!
(使用Vaadin 8.2.alpha2)