2011-06-28 7 views
0

サーバからクライアントへのデータの変換を試みています(GXT Grid)。 サーバー側では、データとそのOKのリストがあります。 その後、私はRPCメソッドを実装し、それもOKだとします。GWT RPCとGXTグリッドへのデータの変換

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

私のアプリを起動するとき - グリッド内のデータなし。問題は何か、エラーは何か分かりません... 問題がクライアントコードにあると仮定してください

+0

あなたはsuですか? r WebasystProductDataはSerializableクラスですか? waConn.getWebasystProductData()によって返されるListの実装は何ですか? ? – jonasr

答えて

0

グリッドは自己によって初期laodを行いません。 com.extjs.gxt.ui.client.data.Loader#loadを呼び出しましたか?

+0

はい、私はでした - loader.load();グリッドを実装する前に – BraginiNI

0
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のプロパティと同じにする必要があることを忘れないでください