Java 如何在没有模型类的情况下从对象在GXT中创建网格?

Java 如何在没有模型类的情况下从对象在GXT中创建网格?,java,gwt,extjs,gxt,Java,Gwt,Extjs,Gxt,我们希望在GXT中创建一个网格,其中网格中的数据是JSON对象,它是从客户端触发的查询的输出 查询是非常随机的,并且在不同的表上有不同的列,我们对此没有任何线索 严格地说,我们没有任何模型类来创建网格 我怎样才能解决这个问题 提前感谢…GXT网格并不意味着那么通用,但它是可以做到的。这就是我的方法: 你需要一些模型类来配合。因为您不知道它包含什么数据,所以也必须将该数据抽象化。如果您对数据类型也一无所知,可以使用Mapas:columnNumber,value 您必须在收到数据后创建(或重新配置

我们希望在GXT中创建一个网格,其中网格中的数据是JSON对象,它是从客户端触发的查询的输出

查询是非常随机的,并且在不同的表上有不同的列,我们对此没有任何线索

严格地说,我们没有任何模型类来创建网格

我怎样才能解决这个问题


提前感谢…

GXT网格并不意味着那么通用,但它是可以做到的。这就是我的方法:

需要一些模型类来配合。因为您不知道它包含什么数据,所以也必须将该数据抽象化。如果您对数据类型也一无所知,可以使用
Map
as:columnNumber,value

您必须在收到数据后创建(或
重新配置()
)网格。解析json后,您就知道它包含多少列(每个条目的值)和行(条目)。假设您将所有行都保存在一个列表中,因此我们有一个
列表
,其中每个列表项表示一行,包含从columnNumber到值的映射。那么您需要这样一个ValueProvider:

public class RowColumnValueProvider implements ValueProvider<Integer, String> {

    private final List<Map<Integer, String>> entries;
    private final int column;

    public RowColumnValueProvider(List<Map<Integer, String>> entries, int column) {
        this.entries = entries;
        this.column = column;
    }

    @Override
    public String getValue(Integer row) {
        return entries.get(row).get(column);
    }

    @Override
    public void setValue(Integer row, String value) {
        entries.get(row).put(column, value);
    }

    @Override
    public String getPath() {
        return String.valueOf(column);
    }
}
公共类RowColumnValueProvider实现ValueProvider{
私人最终名单条目;
私有的最后一个int列;
公共行ColumnValueProvider(列表条目,int列){
this.entries=条目;
this.column=列;
}
@凌驾
公共字符串getValue(整数行){
返回条目.get(行).get(列);
}
@凌驾
public void setValue(整行、字符串值){
entries.get(行)、put(列、值);
}
@凌驾
公共字符串getPath(){
返回字符串.valueOf(列);
}
}
然后使用不同的ValueProvider创建ColumConfig(
新建ValueProvider(columnIndex)
),创建ColumnModel并将其分配给网格