2012年8月16日 20:21:57
关于在TableItem上如何获取Gwt对象的问题
在处理前台和后台交互数据的时候遇到麻烦了,
分类的字段有:
如果想得到活动类别的id =13和分类在前台显示的元素gwtmodel里面的projectId,怎样得到呢?gwtmodel在前台显示的时候是怎样携带数据的呢?
首先,西边是一棵树,在这个panel实现监听,
MenuTreeModel pMenuTreeModel = (MenuTreeModel)be.getItem();
储存选中的条目,如果你想要取出某对象的某个属性,你就
Gwt对象 xx=pMenuTreeModel.getModelObject();例如想得到分类的属性就这样能写
GwtSort gwtSort=pMenuTreeModel.getModelObject();
然后你就可以为所欲为地拿到gwtSort的里面的任何字段的值了,如gwtSort.getId, gwtSort.getProjectId
gwtSort.getNmae.
是不是很神奇呢,我觉得也是,为什么前台的元素可以轻而易举地load到某实体的属性值呢?
鉴于对spring这个框架的了解不足,我就猜猜应该是这段神奇的代码在起作用。
BaseRpcProxy<List<MenuTreeModel>>baseRpcProxy = newBaseRpcProxy<List<MenuTreeModel>>() {
BaseRpcProxy<List<MenuTreeModel>> baseRpcProxy = new BaseRpcProxy<List<MenuTreeModel>>() {
@Override
protected void load(Object loadConfig, AsyncCallback<List<MenuTreeModel>> callback) {
// TODO Auto-generated method stub
RpcLoaderProxy rpcLoaderProxy = new RpcLoaderProxy(new BaseAsyncCallback<List<GwtWsOfficeDocumentProjectSort>>() {
@Override
public void onSuccess(List<GwtWsOfficeDocumentProjectSort> result) {
// TODO Auto-generated method stub
System.err.println("size="+result.size());
List<MenuTreeModel> menuTreeModelList = new ArrayList<MenuTreeModel>();
if (result == null) return;
System.out.println();
for (GwtWsOfficeDocumentProjectSort sort : result) {
// System.err.println("Id=" + sort.getId() + " " + "parentId=" + sort.getParentId() + " projectId=" + sort.getProjectId());
MenuTreeModel menuTreeModel = new MenuTreeModel(sort.getId(), sort.getName());
menuTreeModel.setParentId(sort.getParentId());
menuTreeModel.setModelObject(sort);
menuTreeModel.setChildsId(sort.getChildIds());
if(sort.getParentId() == 0) {
menuTreeModel.setParentId(null);
}
menuTreeModelList.add(menuTreeModel);
System.out.println(sort.getId() + " " + sort.getChildIds());
}
// // System.err.println("id"+gwtWsOfficeDocumentProjectSort.getId());
// MenuTreeModel menuTreeModel = new MenuTreeModel(gwtWsOfficeDocumentProjectSort.getId(), gwtWsOfficeDocumentProjectSort.getName());
// menuTreeModel.setParentId(gwtWsOfficeDocumentProjectSort.getParentId());
// menuTreeModel.setModelObject(gwtWsOfficeDocumentProjectSort);
// menuTreeModelList.add(menuTreeModel);
this.fireEvent(CustomEvents.OnSuccess, menuTreeModelList);
}
}, callback) {
@Override
protected void loadDataAction(Object parameter) {
// TODO Auto-generated method stub
$.get(WsOfficeDocumentRpcServiceAsync.class).getTreeSortOfAllProject($.getCurrentSiteId(), $.getCurrentLocale(), $.getCurrentComponentId(), this.<List<GwtWsOfficeDocumentProjectSort>> getBaseAsyncCallback());
}
};
rpcLoaderProxy.load();
//
}
};
远程代理,将服务器的对象load出来保存在本地,供我们需要的时候再调用,我就这样理解,不知道正确不,百度RpcLoaderProxy也查不出有效的资讯,这方面还需要很长的路要走。