[转帖]jQuery实现省市联动 引发的思考

引用
[转帖]jQuery实现省市联动
这样是实现了级联,但是数据库保存的是编号,在页面显示又要转换。下面是我用JAVA处理的一种方式,不知道性能怎样。
实现思路:
JAVA读取文本-->转换成JSON-->转换成Map-->根据Key取值

Action调用:
		//省份
		Map<String,String> provinceMaps=(Map<String, String>) super.queryProvince();
		//城市
		Map<String,String> cityMaps=(Map<String, String>) super.queryCity();

省份代码MAP
	public Object queryProvince(){
		return getFeatureCodeList("jquery\\json\\json-array-of-province.json","province");
	}
	

城市代码MAP
	public Object queryCity(){
		return getFeatureCodeList("jquery\\json\\json-array-of-city.json","city");
	}
	

省份/城市代码 公共基类方法
	private Map<String,String> getFeatureCodeList(String path,String itemName){
		List<Map<String,Object>> s=getFeatureCodeesList(path,itemName);
		 
		Map<String,String> mapCodes=new HashMap<String,String>();
		for (Map<String, Object> map : s) {
			mapCodes.put(map.get("code").toString(), map.get("name").toString());
		}
		return mapCodes;
	}
	

将对应的json节点转换成List
	@SuppressWarnings("unchecked")
	private List<Map<String,Object>> getFeatureCodeesList(String path,String item){
		JSONObject jsonObject = JSONObject.fromObject(getFile4JSON(path));  
		JSONArray dataArray = JSONArray.fromObject(jsonObject.get(item));   
		return dataArray;
	}
	

读取JSON文本的字符串
	public String getFile4JSON(String path){
		StringBuffer sb=new StringBuffer();
		String projectRealPath= ServletActionContext.getServletContext().getRealPath("/");
		try {
			//建立FileReader对象,并实例化为fr 
			FileReader fr=new FileReader(projectRealPath+path);
			//建立BufferedReader对象,并实例化为br 
			//BufferedReader br=new BufferedReader(fr);
			//读取中文的时候需要转码
			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(projectRealPath+path),"UTF-8")); 
			String Line=reader.readLine();//从文件读取一行字符串 
			//判断读取到的字符串是否不为空 
			while(Line!=null){
			sb.append(Line);
			Line=reader.readLine();//从文件中继续读取一行数据 
			} 
			reader.close();//关闭BufferedReader对象 
			fr.close();//关闭文件 
			//System.out.println(sb);
			return sb.toString();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return NONE;
	}

你可能感兴趣的:(java,jquery,json,Blog,ITeye)