【发布时间】:2012-12-01 18:57:50
【问题描述】:
我的数据模型不是使用 Bean 模型对象,而是建立在 HashMap 容器中的键值对之上。
有没有人有 GXT 的 Grid ValueProvider 和 PropertyAccess 的示例,可以与底层地图一起使用?
【问题讨论】:
我的数据模型不是使用 Bean 模型对象,而是建立在 HashMap 容器中的键值对之上。
有没有人有 GXT 的 Grid ValueProvider 和 PropertyAccess 的示例,可以与底层地图一起使用?
【问题讨论】:
它没有内置的,但很容易构建您自己的。查看这篇博文了解类似的思维方式,尤其是 ValueProvider 部分:http://www.sencha.com/blog/building-gxt-charts
ValueProvider 的目的是作为一种简单的类似反射的机制来读取和写入某个对象中的值。然后PropertyAccess<T> 的目的是根据Java Beans 上的getter 和setter 自动生成其中一些值/模型键/标签提供程序实例,这是一个非常常见的用例。它并没有比这更复杂,它只是一种简单地要求编译器为你做一些非常简单的样板代码的方法。
正如那篇博文所示,您只需实现接口即可非常轻松地构建 ValueProvider。这是一个快速示例,说明如何制作一个读取Map<String, Object> 的示例。当您创建每个实例时,您会告诉它您正在使用哪个键,以及它在读取该值时应该找到的数据类型:
public class MapValueProvider<T> implements
ValueProvider<Map<String, Object>, T> {
private final String key;
public MapValueProvider(String key) {
this.key = key;
}
public T getValue(Map<String, Object> object) {
return (T) object.get(key);
}
public void setValue(Map<String, Object> object, T value) {
object.put(key, value);
}
public String getPath() {
return key;
}
}
然后,您为要读取的每个键构建其中一个,并将其传递给 ColumnConfig 实例或任何其他可能期望它们的实例。
不过,主要的一点是ValueProvider 只是一个接口,可以以任何你喜欢的方式实现。
【讨论】: