Easyui 往数据表格(datagrid)写入json数据却无法显示

    一个很小的问题,搞了一天,以后不要再犯。

public String queryPage() throws IOException{
		//封装分页查询的pageBean
		PageBean pageBean = new PageBean();
		//封装当前页
		pageBean.setCurrentPage(page);
		//封装页容量
		pageBean.setPageSize(rows);
		//封装查询条件
		DetachedCriteria dc = DetachedCriteria.forClass(Subarea.class);
		
		//动态封装
			//如果关键字不为空
		if(StringUtils.isNotBlank(subarea.getAddresskey())){
			//为dc封装模糊查询
			dc.add(Restrictions.like("addresskey", "%"+subarea.getAddresskey()+"%"));
		}
		
			Region region = subarea.getRegion();
			if(region != null){
				String province = region.getProvince();
				String city = region.getCity();
				String district = region.getDistrict();
				dc.createAlias("region", "r");
				if(StringUtils.isNotBlank(province)){
					//添加过滤条件,根据省份模糊查询-----多表关联查询,使用别名方式实现
					//参数一:分区对象中关联的区域对象属性名称
					//参数二:别名,可以任意
					dc.add(Restrictions.like("r.province", "%"+province+"%"));
				}
				if(StringUtils.isNotBlank(city)){
					//添加过滤条件,根据市模糊查询-----多表关联查询,使用别名方式实现
					//参数一:分区对象中关联的区域对象属性名称
					//参数二:别名,可以任意
					dc.add(Restrictions.like("r.city", "%"+city+"%"));
				}
				if(StringUtils.isNotBlank(district)){
					//添加过滤条件,根据区模糊查询-----多表关联查询,使用别名方式实现
					//参数一:分区对象中关联的区域对象属性名称
					//参数二:别名,可以任意
					dc.add(Restrictions.like("r.district", "%"+district+"%"));
				}
			}
					pageBean.setDc(dc);
				//调用service查询出完整的pageBean
				pageBean = subareaService.queryPage(pageBean);
				//json转换时排除掉decidezone和region属性
				JsonConfig jsonConfig = new JsonConfig();
				String[] excludes = {"decidedzone","subareas","currentPage","dc","pageSize"};
				jsonConfig.setExcludes(excludes);
				String json = JSONArray.fromObject(pageBean,jsonConfig).toString();
				//json数据回显
				ServletActionContext.getResponse().setContentType("text/html;charset=utf-8");
				ServletActionContext.getResponse().getWriter().print(json);
				System.out.println("-------------"+json);
				return null;
	}

    如图,我的后台对数据进行处理,最后得出这个Json串:

    

[{"rows":[{"addresskey":"11","endnum":"1","id":"402881346491a4fb016491a68d670000","position":"1","region":{"city":"北京市","citycode":"beijing","district":"西城区","id":"QY002","name":"北京市北京市西城区","postcode":"110102","province":"北京市","shortcode":"BJBJXC"},"single":"0","startnum":"111"},{"addresskey":"东城区","endnum":"12","id":"40288134649237af0164925ba0b70000","position":"东城区","region":{"city":"北京市","citycode":"beijing","district":"东城区","id":"QY001","name":"北京市北京市东城区","postcode":"110101","province":"北京市","shortcode":"BJBJDC"},"single":"0","startnum":"11"}],"total":2}]

    整理一下就是这个样子:

[
	{
		"rows":
			[
				{"addresskey":"11","endnum":"1","id":"402881346491a4fb016491a68d670000","position":"1","region":{"city":"北京市","citycode":"beijing","district":"西城区","id":"QY002","name":"北京市北京市西城区","postcode":"110102","province":"北京市","shortcode":"BJBJXC"},"single":"0","startnum":"111"},
				{"addresskey":"东城区","endnum":"12","id":"40288134649237af0164925ba0b70000","position":"东城区","region":{"city":"北京市","citycode":"beijing","district":"东城区","id":"QY001","name":"北京市北京市东城区","postcode":"110101","province":"北京市","shortcode":"BJBJDC"},"single":"0","startnum":"11"}
			],
		"total":2
	}
]

前台datagrid始终无法显示数据,filed是对应的没错,那么问题究竟在哪呢?

翻看了以下以前写的demo,发现是这个格式的json进行回显:

{                                                      
	"total":100,	
	"rows":[ 
		{"id":"bg001","region":{"province":"北京","city":"北京","district":"朝阳区"},"addresskey":"朝阳北路","startnum":"1","endnum":"100","single":"0","position":"北京市朝阳区xx路1号-100号"}
	]
}

看出来了吗?原来datagrid只能识别一个json对象{},而不是json集合[],所以我把后台的JsonArray改成了JsonObject,就可以把[]去掉了。

String json = JSONObject.fromObject(pageBean,jsonConfig).toString();


完美解决问题!


猜你喜欢

转载自blog.csdn.net/pbrlovejava/article/details/81042481
今日推荐