获取Vaadin`TreeGrid`节点的父对象

时间:2017-10-26 14:46:04

标签: vaadin8

我的TreeGid组件显示了图片和产品之间的关系。图像和产品对象之间的关系是n:m(参见下面的简化示例,产品60148971链接到至少两个图像)。

enter image description here

当用户选择产品时(参见示例),了解其父节点非常重要。我们需要来自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)

0 个答案:

没有答案