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 项目中的窗口位置 getParameter 始终为空?