DWR Ext 加载数据

  一,在Ext中直接使用DWR

  1,PoJO的Manager类为

  

复制代码 代码如下:

  public class CustomerManagerImpl extends HibernateDaoSupport implements CustomerManager {

  public PageModel allCustomers() {

  PageModel pageModel = new PageModel();

  List datas = new ArrayList();

  int total ;

  String hql = "from Customer";

  datas = this.getHibernateTemplate().find(hql);

  String countHql = "select count(*) from Customer";

  total = ((Long)this.getSession().createQuery(countHql).uniqueResult()).intValue();

  pageModel.setDatas(datas);

  pageModel.setTotal(total);

  return pageModel;

  }

  }

  2,那么直接调用DWR取得数据为(dwr.xml代码参考后面)

  

复制代码 代码如下:

  var store = new Ext.data.Store({

  //data:... 这里有DWR调用直接得到

  reader:new Ext.data.JsonReader({id:"sn"},fields), //List数据

  sortInfo:{field:'name', direction:'ASC'}// 排序信息

  });

  //DWR+EXT整合的句子, store.loadData(dataslist);加载数据

  //data返回的是PageModel类,属性为total,datas(List数据类型)

  //这里不用建立函数,直接执行

  JCustomerManager.allCustomers(function(data) {

  var total = data.total;

  var dataslist=data.datas; //数据为List类型

  store.loadData(dataslist); //加载数据

  });

  3,这里的DWR只做一件事,通过匿名函数,将返回的值的List数据直接注入给store。DWR返回的data可以被JsonStore直接读取,我们需要设置对应的fields参数,以告诉JsonReader需要哪些属性。

  4,补充dwr.xml代码

  

复制代码 代码如下:

  <dwr>

  <allow>

  <!-- dwr+spring 注入方式-->

  <create creator="spring" javascript="JCustomerManager">

  <param name="beanName" value="customerManager"/>

  </create>

  <!-- 使用到的类要用到转换器-->

  <convert match="com.graduate.crm.PageModel" converter="bean"></convert>

  <convert match="com.graduate.crm.model.CompanyCustomer" converter="bean"></convert>

  </allow>

  </dwr>