- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在做一个 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
第一个 A
的 property1
不匹配。
关于java - 如何将带过滤功能的嵌套复杂属性添加到 Vaadin 7 Grid?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46975312/
我是一名优秀的程序员,十分优秀!