gpt4 book ai didi

java - 如何将带过滤功能的嵌套复杂属性添加到 Vaadin 7 Grid?

转载 作者:行者123 更新时间:2023-11-30 07:51:30 25 4
gpt4 key购买 nike

我在做一个 Vaadin (7.10) 应用程序,在某些情况下,我需要在容器中添加一个“特殊”嵌套属性。为了应用程序,我们使用 BeanItemContainer 和 Grid。我有一些存储另一个 POJO 的 List 的类,我需要在第二个 POJO 中使用一个属性来过滤网格。配置的一个基本示例是:

public class A {
private String property1;
private String property2;
//There are too getters and setters for this two properties
}

public class B { //This class stores a list of As
private String name;
private List<A> list;
//Getters and setters too
}

这是我的两个基本类,用于存储数据。显示数据的 Vaadin 代码是:

Grid grid = new Grid();
BeanItemContainer<B> container = new BeanItemContainer<>(B.class);

//////////////
container.addNestedContainerProperty("list.property1");
//This OBVIOUSLY doesn't work, because property1 is not part of List
/////////////

grid.setColumns("name");
grid.setContainerDataSource(container);

所以,我的问题是:
可以在 Grid 中显示这个 property1 无需更改 BeanItemContainer ?

最佳答案

这似乎是生成属性的工作。

但是:它仍然需要从 BeanItemContainer 更改或更详细地需要包装它。无论如何,当我这样做时(几年前)这不是问题。

为此,您需要 GeneratedPropertyContainer。它是其他需要添加生成的属性的容器的包装器。

GeneratedPropertyContainer container =
new GeneratedPropertyContainer(yourBeanItemContainer);

将生成的属性添加到该容器

container.addGeneratedProperty("property1"
,new PropertyValueGenerator<String>() { ... });

上面提到的 PropertyValueGenerator 应该返回 String ,您可能会从一些 pojo A 中选择它。

Vaadin API for PropertyValueGenerator

考虑过滤的更新:PropertyValueGenerator 覆盖方法

modifyFilter(Container.Filter filter)

Return an updated filter that should be compatible with the underlying container.

例如:如果您只是从列表中选择第一个 pojo A 及其 property1,您可以实现它以使过滤器过滤掉所有 B 第一个 Aproperty1 不匹配。

关于java - 如何将带过滤功能的嵌套复杂属性添加到 Vaadin 7 Grid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46975312/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com