extjs 查询条件和列表
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());
}
浙公网安备 33010602011771号