GWT RPC и перевод данных в GXT Grid - PullRequest
0 голосов
/ 28 июня 2011

Я пытаюсь перевести данные с сервера на клиент (GXT Grid).На стороне сервера у меня есть список с данными и все в порядке.Затем я реализую методы RPC и полагаю, что это тоже нормально.Вот код:

  1. GWTService

    @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);

При запуске моего приложения - нет данных внутри сетки.Не знаю, в чем проблема, нет ошибок ... Предположим, что проблема в коде клиента

Ответы [ 2 ]

0 голосов
/ 08 июля 2011
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

0 голосов
/ 28 июня 2011

Сетка сама по себе не выполняет первоначальную загрузку.Вы вызывали com.extjs.gxt.ui.client.data.Loader # load?

...