2

我的数据模型不是使用 Bean 模型对象,而是建立在 HashMap 容器中的键值对之上。

有没有人有 GXT 的 Grid ValueProvider 和 PropertyAccess 的示例,可以与底层地图一起使用?

4

1 回答 1

8

它没有内置的,但很容易构建自己的。查看此博客文章以了解类似的思维方式,尤其是 ValueProvider 部分:http ://www.sencha.com/blog/building-gxt-charts

a 的目的ValueProvider是成为一种简单的类似反射的机制,用于在某个对象中读取和写入值。then的目的PropertyAccess<T>是根据 Java Beans 上的 getter 和 setter 自动生成其中一些 value/modelkey/label 提供程序实例,这是一个非常常见的用例。它没有比这更复杂的复杂性,它只是一种简单地要求编译器为你做一些非常简单的样板代码的方法。

正如那篇博文所示,您只需实现接口即可非常轻松地构建 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只是一个接口,可以以任何你喜欢的方式实现。

于 2012-12-13T20:08:52.890 回答