`
jueyue
  • 浏览: 196575 次
社区版块
存档分类
最新评论

为什么jeecg没有用a.b而用了a_b

 
阅读更多
   说实话,我也是a.b的坚定用户者,我自己也为此花费了不少功夫。但是我发现我一直都没有问为什么用_?
而只是问为什么不用 .  之前还可笑的改了源码支持了 . 这种取值方式 直到昨天,写了一个拼装json的代码
以为以前jeecg因为json的原因而不使用的,可是花了一个晚上,自己改了toJson这个方法可以返回嵌套对象了,but,but,我差改了之后easyui完全挂了,a.b这种值竟然没有任何作用
才想起,可能是easyui的原因,是easyui不支持a.b这种取值方式,而不是jeecg不想支持,今天网上百度了下
easyui源码,虽然是1.0.2版本,但是这也是基础的。发现
尼玛obj[field]可以取值才怪呢,我差,easyui真是个人才,可怜我两个晚上
ps2:自己昨天写的tojson 
/**
	 * 循环LIST对象拼接EASYUI格式的JSON数据
	 * @param fields
	 * @param total
	 * @param list
         * 可以避免掉hibernate的延长加载
	 */
	public static String listtojson(String[] fields, int total, List list,String[] footers) throws Exception {
		StringBuilder sb = new StringBuilder();
		sb.append("{\"total\":" + total + ",\"rows\":[");
		Map<String,Object> fieldMap = getFieldMap(fields);
		for (int j = 0; j < list.size(); j++) {
			sb.append("{\"state\":\"closed\",");
			toJson(fieldMap,list.get(j),sb);
			if (j != list.size() - 1) {
				sb.append("},");
			} else {
				sb.append("}");
			}
		}
		sb.append("]");
		Object value;
		String footer;
		if(footers!=null){
			sb.append(",\'footer\':[{\'name\':\'合计\',");
			for(int i = 0;i<footers.length;i++){
				footer = footers[i];
				String footerFiled = footer.split(":")[0];
				if(footer.split(":").length==2){
					value = footer.split(":")[1];
				}else{
					value = TagUtil.getTotalValue(footerFiled,list);
				}
				sb.append("\'"+footerFiled+"\':\'"+value+"\'");
				if(i!=footers.length-1){
					sb.append(",");
				}
			}
			sb.append("}]");
		}
		sb.append("}");
		System.out.println(sb.toString());
		return sb.toString();
	}
	
	
	private static void toJson (Map<String,Object> fieldMap,Object obj,StringBuilder sb){
		Iterator<String> it = fieldMap.keySet().iterator();
		Object field,value;
		String key;
		String [] arr;
		while(it.hasNext()){
			key = it.next();
			field = fieldMap.get(key);
			if(field instanceof Map){
				sb.append("\""+key+"\":{");
				toJson((Map<String,Object>)field,obj,sb);
				sb.append("}");
			}else if(field instanceof String[]){
				arr = (String[])field;
				value = TagUtil.fieldNametoValues(arr[0], obj);
				sb.append("\"" + arr[1] + "\"" + ":\"" + value + "\"");
			}else{
				value = TagUtil.fieldNametoValues((String)field, obj);
				sb.append("\"" + field + "\"" + ":\"" + value + "\"");
			}
			if(it.hasNext()){
				sb.append(",");
			}
		}
	}
	/**
	 * 组装对象,把一个对象的元素放到一起
	 * @param fields
	 * @return
	 */
	private static Map<String, Object> getFieldMap(String[] fields) {
		Map<String,Object> results = new HashMap<String, Object>();
		for(int i = 0;i<fields.length;i++){
			if(fields[i].indexOf(".")>0){
				judgeFields(results,fields[i].split("\\."),fields[i]);//下面的多属性字段
			}else{
				results.put(fields[i], fields[i]);//这个对象的直接字段
			}
		}
		return results;
	}
	
	private static void judgeFields(Map<String, Object> results, String[] param,String field) {
		Map<String,Object> temp;
		for(int i = 0;i<param.length;i++){
			if(results.containsKey(param[i])){
				results = (Map<String,Object>)results.get(param[i]);
			}else{
				if(i==param.length-1){
					results.put(param[i],new String[]{field,param[i]});
				}else{
					temp = new HashMap<String, Object>();
					results.put(param[i],temp);
					results = temp;
				}
			}
		}
	}
 
0
0
分享到:
评论

相关推荐

    jeecg-boot环境搭建

    2. 前端:ant-design-vue-jeecg/Public/index.html:window._CONFIG['domainURL'] ='http://127.0.0.1: 新端口号/jeecg-boot';ant-design-vue-jeecg/vue.config.js:target: 'http://localhost: 新端口号', //请求...

    JEECG 简单实例讲解权限控制.docx

    - 创建至少三个用户:员工小A、员工小B以及经理王经理,并分别为他们分配对应的角色。 ##### 5. 菜单配置 - 为不同角色配置不同的菜单权限,确保每个角色只能访问与其职责相关的功能模块。 ##### 6. 按钮控件权限...

    JEECG UI标签文档v3.7

    - **DatePicker**: 引入版本为 `4.8B` 的 My97DatePicker 日期选择器。 #### 2. Datagrid(数据列表标签) **2.1 DataGrid父标签** **2.1.1 示例** ```xml ``` **2.1.2 参数** - **id**: 类型为 `string`。...

    JimuReport 积木报表 v1.6.6.zip

    **JimuReport 积木报表 v1.6.6** 是一个开源的报表设计工具,专为快速构建灵活多变的报表而设计。这个版本的更新可能包含性能优化、新功能添加以及对已有特性的改进。它允许用户通过拖拽方式来设计报表,非常适合...

    别人封装的网页生成PDF导出工具

    这使得我们可以捕获网页的视觉表示,然后进一步处理或导出,例如,用jspdf转换为PDF。 3. 结合使用: 在实际应用中,首先会使用html2canvas将网页内容渲染到Canvas上,然后通过jspdf读取Canvas的图像数据,并将其...

    Feign调用401.zip

    我们在使用spring cloud时如果集成了springsecurity,那么应用服务A再调用服务B时使用Feign请求会出现401授权认证的问题,那么解决办法就是在feign调用请求时把token携带过去就可以解决这个问题了,引入资源包中的...

    Spring Boot中Controller间的调用

    4. 维护困难:若Controller B接口有变化,Controller A需同步更新。 尽管如此,`RestTemplate`更适合用于跨系统或微服务间的通信,而不是同一应用内的Controller调用。 另一种方式是通过`ApplicationContext`获取...

    struts2+spring3+hibernate4 + UI 组件(easyui)+代码生成器+共通封装+Spring_security权限

    A.动态选择需要生成文件(ServiceI\ServiceImpl\Jsp\Action\Entity\Page) B.动态选择JSP模板(行编辑/单页编辑) ********************************************************************* 该文档只是框架说明和...

Global site tag (gtag.js) - Google Analytics