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

标签 java vaadin vaadin7 vaadin-grid

我正在做一个 Vaadin (7.10) 应用程序,在某些 View 中,我需要在容器中添加一个“特殊”嵌套属性。为了应用程序的目的,我们使用 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 进行更改,或者更详细地说,它需要包装它。无论如何,当我(几年前)这样做时,这不是问题。

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

GeneratedPropertyContainer container =
    new GeneratedPropertyContainer(yourBeanItemContainer);

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

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

上面提到的 PropertyValueGenerator 应该返回您可能从某些 pojo A 中选择的 String

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 a 的第一个 As property1 不匹配。

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

相关文章:

asynchronous - EJB 异步线程与 Vaadin,注入(inject)不工作(Vaadin 8、Vaadin-CDI、EJB ManagedExecutorService 线程)

java - {Java} Vaadin 14 - 检测用户离开(关闭选项卡、f5 等)

java - vaadin 中的列日期过滤不起作用

java - Vaadin客户端应用程序理解

java - 如何在java swing中的每个页面中打印带有页脚的整个JPanel

java - Apache Commons Math 2.2 百分位数错误?

java - 将另一个api的返回数据集成到服务方法中

java - Vaadin 组件的 Selenium WebDriver 自动化

java - 使用 MenuBar.Command 在新窗口中打开链接

java - 页眉和页脚的良好 JSP 代码结构