GWT RPC 和数据转换为 GXT Grid

Posted

技术标签:

【中文标题】GWT RPC 和数据转换为 GXT Grid【英文标题】:GWT RPC and data translating to GXT Grid 【发布时间】:2011-06-28 05:43:01 【问题描述】:

我正在尝试将数据从服务器转换到客户端(GXT Grid)。 在服务器端,我有一个包含数据的列表,它可以。 然后我实现 RPC 方法并假设它也可以。这是代码:

    GWT 服务

    @RemoteServiceRelativePath("gwtservice")
    public interface GWTService extends RemoteService 
        public List<WebasystProductData> getWebasystProductData();
    
    

    GWTServiceAsynch

    public interface GWTServiceAsync 
        public void getWebasystProductData(AsyncCallback<List<WebasystProductData>> callback);
    
    

    GWTServiceImpl

    public class GWTServiceImpl extends RemoteServiceServlet implements GWTService 
    
        //private Map<String, WebasystProductData> productData;
        public List<WebasystProductData> getWebasystProductData() 
    
        WebasystConnection waConn = new WebasystConnection();
        List<WebasystProductData> waPD = waConn.getWebasystProductData();
    
        return waPD;
    
    

然后我使用我的 beanmodel、beanmodelreader、listloader、listore 和 grid 实现代理。

...

rpc = RpcInit.initRpc();

RpcProxy<BeanModel> proxy = new RpcProxy<BeanModel>() 

    @Override
    public void load(Object loadConfig, AsyncCallback callback) 
        rpc.getWebasystProductData(callback);
    
;

BeanModelReader reader = new BeanModelReader();
BaseListLoader loader = new BaseListLoader(proxy, reader);
ListStore<BeanModel> store = new ListStore<BeanModel>(loader);

List<ColumnConfig> col = new ArrayList<ColumnConfig>();
ColumnConfig column = new ColumnConfig();
column.setId("productIdWA");
column.setHeader("ProductID");
column.setWidth(50);
col.add(column);

column = new ColumnConfig();
column.setId("productNameWA");
column.setHeader("productName");
column.setWidth(120);
col.add(column);

column = new ColumnConfig();
column.setId("productPriceWA");
column.setHeader("productPrice");
column.setWidth(80);
col.add(column);

column = new ColumnConfig();
column.setId("categoryIdWA");
column.setHeader("categoryID");
column.setWidth(80);
column.setAlignment(HorizontalAlignment.RIGHT);
col.add(column);

当启动我的应用程序时 - 网格内没有数据。不知道是什么问题,没有错误... 假设问题出在客户端代码中

【问题讨论】:

你的 WebasystProductData 是一个可序列化的类吗? waConn.getWebasystProductData() 返回的 List 的实现是什么? ? 【参考方案1】:

Grid 不会自己做初始的 laod。你打电话给 com.extjs.gxt.ui.client.data.Loader#load 了吗?

【讨论】:

【参考方案2】:
RpcProxy<List<WebasystProductData>> proxy= new RpcProxy<List<WebasystProductData>>() 
        @Override
        protected void load(Object loadConfig,AsyncCallback<List<WebasystProductData>> callback) 

            getWebasystProductData(config,callback);
        
    ;
    BeanModelReader reader = new BeanModelReader();
    ListLoader<ListLoadResult<ModelData>> loader = new BaseListLoader<ListLoadResult<ModelData>>(proxy, reader);
    ListStore<BeanModel> store = new LisStore<BeanModel>(loader);

那么就:

Grid<BeanModel> grid = new Grid<BeanModel>(store,column);
    grid.addListener(Events.Attach, new Listener<GridEvent<BeanModel>>()   
        public void handleEvent(GridEvent<BeanModel> be)   
            loader.load();
          
      );

记住你的 Pojo 需要实现 BeanModelTag 接口

column = new ColumnConfig();
column.setId("XXX");

XXX 需要与您的 Pojo 属性相同

【讨论】:

以上是关于GWT RPC 和数据转换为 GXT Grid的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Swagger UI 添加到现有的 GXT 或 GWT 项目并使用当前的 GWT-RPC REST 请求?

GWT与GXT

GWT/GXT 项目中的窗口位置 getParameter 始终为空?

GWT 编辑器和 GXT 网格不发送新创建的代理实体,只有 NULL 值

调试 GWT Rcp 失败且无错误

模型数据接口 gxt