extjs 省市区三级联动combobox


测试主文件JSP:

 

 

ComboboxTest.js

 

JAVA   Model

ComboArea.java

 

ComboCity.java

 

ComboProvince.java

 

 

Struts

xml

 

Action

 

Service

package com.gwtjs.service;

import java.util.List;

import com.gwtjs.model.ComboArea;
import com.gwtjs.model.ComboCity;
import com.gwtjs.model.ComboProvince;

public interface AreaService {
	public List<ComboProvince> execute(final String ascProperty, final boolean isAsc) ;
	
	public List<ComboCity> findCitys(Object fatherID);
	
	public List<ComboArea> findAreas(Object fatherID);
}

package com.gwtjs.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.gwtjs.dao.ComboAreaManager;
import com.gwtjs.dao.ComboCityManager;
import com.gwtjs.dao.ComboProvinceManager;
import com.gwtjs.model.ComboArea;
import com.gwtjs.model.ComboCity;
import com.gwtjs.model.ComboProvince;
import com.gwtjs.model.utils.Pager;
import com.gwtjs.service.AreaService;

@Service("areaService")
public class AreaServiceImpl implements AreaService {
	
	@Autowired
	private ComboProvinceManager provinceDao;
	@Autowired
	private ComboCityManager cityDao;
	@Autowired
	private ComboAreaManager areaDao;
	
	@Override
	public List<ComboProvince> execute(final String ascProperty, final boolean isAsc) {
		Pager<ComboProvince> p = provinceDao.findAll(ComboProvince.class, ascProperty, isAsc);
		return p.getEntityList();
	}

	@Override
	public List<ComboCity> findCitys(Object fatherID) {
		return cityDao.findPropertyAll(ComboCity.class, "fatherID", fatherID).getEntityList();
	}

	@Override
	public List<ComboArea> findAreas(Object fatherID) {
		return areaDao.findPropertyAll(ComboArea.class, "fatherID", fatherID).getEntityList();
	}

}

Hibernate   Dao 

package com.gwtjs.dao;

import com.gwtjs.model.ComboProvince;

public interface ComboProvinceManager extends EntityDao<ComboProvince,Integer>{

}
package com.gwtjs.dao;

import com.gwtjs.model.ComboCity;

public interface ComboCityManager extends EntityDao<ComboCity, Integer> {

}
package com.gwtjs.dao;

public interface ComboAreaManager extends
		EntityDao<com.gwtjs.model.ComboArea, Integer> {

}



上面的是三个Java类接口,拷贝到一起了,实现类为空的实现,只为了类型映射方便而已

EntityDao 接口

/**
	 * <h2>按属性查全部,无分页,无排序 - 1</h2>
	 * 
	 * @param entityClass
	 * @param attrName
	 * @param attrNo
	 * @return
	 */
	public Pager<T> findPropertyAll(Class<T> entityClass, String attrName,
			Object attrNo);

/**
	 * <h2>按属性查全部 - 4</h2>
	 * @param enterprise 企业标识
	 * @param entityClass
	 *            实体
	 * @param attrName
	 *            查询的属性名
	 * @param attrNo
	 *            属性值
	 * @param start
	 * @param limit
	 * @param ascProperty
	 * @param isAsc
	 * @return
	 */
	public Pager<T> findPropertyAll(Class<T> entityClass, Integer enterprise,
			String attrName, Object attrNo, Integer start, Integer limit,
			String ascProperty, boolean isAsc);
EntityDaoImpl实现类

/**
	 * <h2>按属性查全部 - 1</h2>
	 * 
	 * @param entityClass
	 *            实体
	 * @param attrName
	 *            查询的属性名
	 * @param attrNo
	 *            属性值
	 * @return
	 */
	@Override
	public Pager<T> findPropertyAll(Class<T> entityClass, String attrName,
			Object attrNo) {
		return findPropertyAll(entityClass, attrName, attrNo, null, true);
	}

	/**
	 * <h2>按属性查全部 - 2</h2>
	 * 
	 * @param entityClass
	 *            实体
	 * @param attrName
	 *            查询的属性名
	 * @param attrNo
	 *            属性值
	 * @param ascProperty
	 * @param isAsc
	 * @return
	 */
	@Override
	public Pager<T> findPropertyAll(Class<T> entityClass, String attrName,
			Object attrNo, String ascProperty, boolean isAsc) {
		return findPropertyAll(entityClass, attrName, attrNo, 0, 0,
				ascProperty, isAsc);
	}

	/**
	 * <h2>按属性查全部 - 3</h2>
	 * 
	 * @param entityClass
	 *            实体
	 * @param attrName
	 *            查询的属性名
	 * @param attrNo
	 *            属性值
	 * @param start
	 * @param limit
	 * @param ascProperty
	 * @param isAsc
	 * @return
	 */
	public Pager<T> findPropertyAll(final Class<T> entityClass,
			final String attrName, final Object attrNo, final Integer start,
			final Integer limit, final String ascProperty, final boolean isAsc) {
		return findPropertyAll(entityClass, null, attrName, attrNo, start,
				limit, ascProperty, isAsc);
	}

	@Override
	/**
	 * <h2>按属性查全部 - 4</h2>
	 * @param entityClass 实体
	 * @param attrName 查询的属性名
	 * @param attrNo 属性值
	 * @param start
	 * @param limit
	 * @param ascProperty
	 * @param isAsc
	 * @return
	 */
	public Pager<T> findPropertyAll(final Class<T> entityClass,
			final Integer enterprise, final String attrName,
			final Object attrNo, final Integer start, final Integer limit,
			final String ascProperty, final boolean isAsc) {

		Pager<T> p = new Pager<T>();
		StringBuilder sb = new StringBuilder();
		sb.append("SELECT * FROM ");
		sb.append(MyHibernateConfigurationHelper.getTableName(entityClass));

		if (null != attrName && null != attrNo) {
			sb.append(" WHERE ");
			sb.append(attrName);
			sb.append("='");
			sb.append(attrNo);
			sb.append("'");
		}

		if (null!=enterprise && 0 != enterprise) {
			sb.append(MyHibernateConfigurationHelper.buildSql(sb.toString()," AND "));

			sb.append(" enterprise=");
			sb.append(enterprise);
		}

		String countSql = sb.toString();// 总记录数sql

		if (null != ascProperty) {
			sb.append(" ORDER BY ");
			sb.append(ascProperty);
			if (isAsc) {
				sb.append(" ASC ");
			} else {
				sb.append(" DESC ");
			}
		}
		if (0 != limit) {
			sb.append(" LIMIT ");
			sb.append(start);
			sb.append(",");
			sb.append(limit);
		}

		int myRefreshPeriod = 600; // 秒/10分钟
		String key = getKey(sb.toString());

		try {
			p = (Pager<T>) admin.getFromCache(key, myRefreshPeriod);
			logger.info("本次从 OSCache 中读取数据...........");
		} catch (NeedsRefreshException e) {
			Query q = getSession().createSQLQuery(sb.toString())
					.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
			p.setEntityList(q.list());
			p.setTotalCounts(getEntityCount(countSql));// 总记录数
			admin.putInCache(key, p);// 往内存中填值
			logger.info("本次从 DataBase 中读取数据.................");
		}
		sb.delete(0, sb.length());

		return p;
	}

数据库网上找找,有

没有到群29521319下

源码也可以到此群下

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值