Java 使用EXT-GWT组合框

Java 使用EXT-GWT组合框,java,gwt,gxt,Java,Gwt,Gxt,我扩展了组合框,在构造函数中有这样的代码: ModelType type = new ModelType(); type.setRoot("data"); type.addField("id", "id"); type.addField("name", "name"); JsonLoadResultReader<ListLoadResult<ModelData>> reader = new JsonLoadResultReader<ListLoadResult

我扩展了组合框,在构造函数中有这样的代码:

ModelType type = new ModelType();  
type.setRoot("data");
type.addField("id", "id");
type.addField("name", "name");

JsonLoadResultReader<ListLoadResult<ModelData>> reader = new JsonLoadResultReader<ListLoadResult<ModelData>>(type);

RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, "/category/getall");
HttpProxy<String> proxy = new HttpProxy<String>(builder);

BaseListLoader<ListLoadResult<ModelData>> loader = new BaseListLoader<ListLoadResult<ModelData>>(proxy, reader);

ListStore<ModelData> store = new ListStore<ModelData>(loader);


setStore(store);
loader.load();
setValueField("id");
setDisplayField("name");
setName("categoty");
ModelType type=newmodeltype();
setRoot类型(“数据”);
type.addField(“id”、“id”);
type.addField(“名称”、“名称”);
JsonLoadResultReader=新的JsonLoadResultReader(类型);
RequestBuilder=newrequestbuilder(RequestBuilder.GET,“/category/getall”);
HttpProxy代理=新的HttpProxy(生成器);
BaseListLoader=新的BaseListLoader(代理、读卡器);
ListStore=新的ListStore(加载器);
设置存储(存储);
loader.load();
setValueField(“id”);
setDisplayField(“名称”);
设置名称(“类别”);

结果:ajax查询发送到服务器,但在combobox中看不到结果,但当单击它时,它会再次加载数据并显示它,以及如何将值设置为combobox?

我创建了一个简单的存储工厂方法,可以解决您的问题。 在类中复制并创建存储:

setStore(_createListStore("/category/getall", "data", "id", "name"));
loader.load();
setValueField("id");
setDisplayField("name");
setName("categoty");
代码中的错误是向ModelType添加了两个字段,而应该只添加一个字段,其中“id”作为值,“name”作为显示

protected ListStore<ModelData> _createListStore(String url, String root, String fieldValue, String displayValue){
    ModelType mt = new ModelType();
    mt.setRoot(root);
    mt.addField(displayValue, fieldValue);
    RequestBuilder rb = new RequestBuilder(RequestBuilder.GET, url);
    HttpProxy<String> proxy = new HttpProxy<String>(rb);
    JsonLoadResultReader<ListLoadResult<ModelData>> reader = new JsonLoadResultReader<ListLoadResult<ModelData>>(mt);
    final BaseListLoader<ListLoadResult<ModelData>> loader = new BaseListLoader<ListLoadResult<ModelData>>(proxy, reader);
    ListStore<ModelData> store = new ListStore<ModelData>(loader);
    return store;
}
protectedliststore\u createListStore(字符串url、字符串根、字符串字段值、字符串显示值){
ModelType mt=新ModelType();
山毛根(根);
mt.addField(显示值、字段值);
RequestBuilder rb=新的RequestBuilder(RequestBuilder.GET,url);
HttpProxy代理=新的HttpProxy(rb);
JsonLoadResultReader=新的JsonLoadResultReader(mt);
最终BaseListLoader=新BaseListLoader(代理、读卡器);
ListStore=新的ListStore(加载器);
退货店;
}

在触发查询之前是否呈现组合框?是否尝试调用layout()方法。我通常在调用load()之前设置value字段和display字段,但从未使用JSON objectsYep,我尝试在呈现带有该组合框的窗口后调用load(),同样的问题,如何将数据加载到组合框并选择默认值?