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

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

  1. GWT 服务

    @RemoteServiceRelativePath("gwtservice")
    public interface GWTService extends RemoteService {
        public List<WebasystProductData> getWebasystProductData();
    }
    
  2. GWTServiceAsynch

    public interface GWTServiceAsync {
        public void getWebasystProductData(AsyncCallback<List<WebasystProductData>> callback);
    }
    
  3. 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 的实现是什么? ?

标签: gwt gwt-rpc gxt


【解决方案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 属性相同

    【讨论】:

      猜你喜欢
      • 2012-02-24
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多