说实话,我也是a.b的坚定用户者,我自己也为此花费了不少功夫。但是我发现我一直都没有问为什么用_?
而只是问为什么不用 . 之前还可笑的改了源码支持了 . 这种取值方式 直到昨天,写了一个拼装json的代码
以为以前jeecg因为json的原因而不使用的,可是花了一个晚上,自己改了toJson这个方法可以返回嵌套对象了,but,but,我差改了之后easyui完全挂了,a.b这种值竟然没有任何作用
才想起,可能是easyui的原因,是easyui不支持a.b这种取值方式,而不是jeecg不想支持,今天网上百度了下
easyui源码,虽然是1.0.2版本,但是这也是基础的。发现
尼玛obj[field]可以取值才怪呢,我差,easyui真是个人才,可怜我两个晚上
ps1:easyui源码 http://jquery-easyui.googlecode.com/svn/trunk/src/
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; } } } }
相关推荐
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: 新端口号', //请求...
- 创建至少三个用户:员工小A、员工小B以及经理王经理,并分别为他们分配对应的角色。 ##### 5. 菜单配置 - 为不同角色配置不同的菜单权限,确保每个角色只能访问与其职责相关的功能模块。 ##### 6. 按钮控件权限...
- **DatePicker**: 引入版本为 `4.8B` 的 My97DatePicker 日期选择器。 #### 2. Datagrid(数据列表标签) **2.1 DataGrid父标签** **2.1.1 示例** ```xml ``` **2.1.2 参数** - **id**: 类型为 `string`。...
**JimuReport 积木报表 v1.6.6** 是一个开源的报表设计工具,专为快速构建灵活多变的报表而设计。这个版本的更新可能包含性能优化、新功能添加以及对已有特性的改进。它允许用户通过拖拽方式来设计报表,非常适合...
这使得我们可以捕获网页的视觉表示,然后进一步处理或导出,例如,用jspdf转换为PDF。 3. 结合使用: 在实际应用中,首先会使用html2canvas将网页内容渲染到Canvas上,然后通过jspdf读取Canvas的图像数据,并将其...
我们在使用spring cloud时如果集成了springsecurity,那么应用服务A再调用服务B时使用Feign请求会出现401授权认证的问题,那么解决办法就是在feign调用请求时把token携带过去就可以解决这个问题了,引入资源包中的...
4. 维护困难:若Controller B接口有变化,Controller A需同步更新。 尽管如此,`RestTemplate`更适合用于跨系统或微服务间的通信,而不是同一应用内的Controller调用。 另一种方式是通过`ApplicationContext`获取...
A.动态选择需要生成文件(ServiceI\ServiceImpl\Jsp\Action\Entity\Page) B.动态选择JSP模板(行编辑/单页编辑) ********************************************************************* 该文档只是框架说明和...