日期:2014-05-16  浏览次数:20408 次

<select>二级联动价格策略+js的eval()

eval()函数,曾经自己并不觉得怎么样,但是项目中遇到一个需求,被迫使用,感觉确实很强大,记下来,忘了了看看!

?

需求: 1)???????? 省内价格可用精确到地市(即,区号),省外价格只精确到省。(产品表中的产品集合将精确到地市,即一万多产品;非本省操作时,将只显示省名称,实际操作地市产品)。

???????? 2)???????? 产品查询:(查询条件)

?????????????? a)???????? 地区(省内选择地市,省外选择省份)

?????????????? b)???????? 面值

?????????????? c)???????? 运营商

综上:1.jsp页面需要一个二级联动<select>,选择省内时查出当前工号对应省份的所有

??????? 城市,例如:省内(黑龙江)-->查出哈尔滨、齐齐哈尔、大庆等。

??????2.选择省外,查出T_AREA表中所有的省份,例如:黑龙江、辽宁、河南等。

?

一、ServiceImpl中方法

	/* 查询所有省号、所有省份名称--去掉重复的,此方法hibernate返回一个Object数组,对distinct 封装了
	 * @date 2011-5-21 下午04:31:26
	 */
	@Override
	public List<TArea> getProvinceAndCodeList() {
		String hql = "select distinct t.provinceCode,t.province from TArea t";
		
		List<TArea> list = queryByHql(hql);
		return list;
	}
	
	/* 根据区号,查询当前区号对应省内的所有市 集合
	 * @date 2011-5-21 下午04:57:00
	 */
	@Override
	public List<TArea> getProvinceListByAreaCode(String areaCode) {
		
		String sql = "";
		if(null != areaCode && !"".equals(areaCode)){
			
			sql = "select * from t_area t where t.province_code=" +
					"(select t1.province_code from t_area t1 where t1.area_code='"+areaCode+"')";
		}
		 List<TArea> list = queryBySql(sql);
			return list;
		
	}

?

?

二、struts2的Action两个方法中查询出

??????

?

	/**
	 * 获得当前工号省内的所有--选择的省内
	 * @author mengxianjun
	 * @date 2011-5-23 上午09:28:14
	 */
	public void getAllCity() {
		
		try
		{
			String area_code = ConfigCtrl.getConfigValue("area_code");//配置表,获得默认区号
			
			tAreaList = areaService.getProvinceListByAreaCode(area_code);//当前工号所在省的所有市集合
			
			this.getResponse().setCharacterEncoding("UTF-8");
			PrintWriter out = this.getResponse().getWriter();
			JSONArray myjsonObj = JSONArray.fromObject(tAreaList);
			out.println(myjsonObj.toString());
			out.flush();
			out.close();
		}
		catch( Exception e )
		{
			log.error("PriceStrategyAction's method getAllCity ",e);
		}	
	}
	
	/**
	 * 获得所有省--选择的省外
	 * @author mengxianjun
	 * @date 2011-5-23 上午09:28:14
	 */
	public void getAllProvince() {
		
		try
		{
			allProvinceList = areaService.getProvinceAndCodeList();//所有省集合
			
			this.getResponse().setCharacterEncoding("UTF-8");
			PrintWriter out = this.getResponse().getWriter();
			JSONArray myjsonObj = JSONArray.fromObject(allProvinceList);
			out.println(myjsonObj.toString());
			out.flush();
			out.close();
		}
		catch( Exception e )
		{
			log.error("PriceStrategyAction's method getAllProvince ",e);
		}
	}

?

?三、jsp页面