1. ext中日期框直接使用getValue()提交给Struts2的Action时,Struts会自动把日期值填充到日期变量中(java.util.Date).
使用Hibernate的DetachedCriteria查询记录时,可以直接使用诸如
criteria.add(Restrictions.gt("startTime",startTime)); //startTime为java.util.Date对象
来进行日期对象的比较。注:当前数据库环境为oracle10g.
2.前台每一个查询表单域的name设置为列表对象的属性名。提交时代码如下:
var queryForm=Ext.getCmp(formId);
Ext.apply(store.baseParams,queryForm.form.getFieldValues()); //获得当前分页条的设置大小 var pageSize=Ext.getCmp(gridId).getBottomToolbar().pageSize; store.load({ params:{ start:0, limit:pageSize } });
3.Struts中的Action implements ModelDriven<MyClass> ,生成DetachedCriteria对象的方法如下:
private DetachedCriteria getCriteria(MyClass example){ DetachedCriteria criteria=DetachedCriteria.forClass(MyClass .class); if(example!=null){ if(!isNull(example.getCalledUser())) criteria.add(Restrictions.like("calledUser",example.getCalledUser(),MatchMode.ANYWHERE)); if(!isNull(example.getType())){ criteria.add(Restrictions.eq("type", example.getType())); } if(!isNull(example.getStatus())){ criteria.add(Restrictions.eq("status", example.getStatus())); } if(!isNull(example.getStartTime())){ criteria.add(Restrictions.gt("startTime",example.getStartTime())); } if(!isNull(example.getEndTime())){ criteria.add(Restrictions.lt("endTime",example.getEndTime())); } } return criteria; }
然后根据criteria生成列表:
public List getMyClassList(MyClass example, Integer start, Integer limit){ DetachedCriteria criteria=getCriteria(example); criteria.addOrder(Order.asc("id")); //id为MyClass的一个属性 List list; if(limit!=-1) list=getHibernateTemplate().findByCriteria(criteria, start, limit); else list=getHibernateTemplate().findByCriteria(criteria); return list; }
求总记录数的方法如下:
public int getCounts(MyClass example) { Session session=getSessionFactory().getCurrentSession(); DetachedCriteria dc=getCriteria(example); dc.setProjection(Projections.rowCount()); Criteria crit=dc.getExecutableCriteria(session); return Integer.parseInt(crit.uniqueResult().toString()); }