关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 16306|回复: 2

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

[复制链接]
发表于 2013-10-22 21:29:50 | 显示全部楼层 |阅读模式
说实话,我也是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
  1. /**
  2.          * 循环LIST对象拼接EASYUI格式的JSON数据
  3.          * @param fields
  4.          * @param total
  5.          * @param list
  6.          */<span class="comment" style="color: rgb(0, 130, 0); width: auto; border: 0px; font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; font-size: 12px; line-height: 18px; background-color: rgb(250, 250, 250);">可以避免掉hibernate的延长加载</span><span style="color: rgb(0, 0, 0); font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', Consolas, 'Courier New', monospace; font-size: 12px; line-height: 18px; background-color: rgb(250, 250, 250);"> </span>
  7.         public static String listtojson(String[] fields, int total, List list,String[] footers) throws Exception {
  8.                 StringBuilder sb = new StringBuilder();
  9.                 sb.append("{"total":" + total + ","rows":[");
  10.                 Map<String,Object> fieldMap = getFieldMap(fields);
  11.                 for (int j = 0; j < list.size(); j++) {
  12.                         sb.append("{"state":"closed",");
  13.                         toJson(fieldMap,list.get(j),sb);
  14.                         if (j != list.size() - 1) {
  15.                                 sb.append("},");
  16.                         } else {
  17.                                 sb.append("}");
  18.                         }
  19.                 }
  20.                 sb.append("]");
  21.                 Object value;
  22.                 String footer;
  23.                 if(footers!=null){
  24.                         sb.append(",\'footer\':[{\'name\':\'合计\',");
  25.                         for(int i = 0;i<footers.length;i++){
  26.                                 footer = footers[i];
  27.                                 String footerFiled = footer.split(":")[0];
  28.                                 if(footer.split(":").length==2){
  29.                                         value = footer.split(":")[1];
  30.                                 }else{
  31.                                         value = TagUtil.getTotalValue(footerFiled,list);
  32.                                 }
  33.                                 sb.append("\'"+footerFiled+"\':\'"+value+"\'");
  34.                                 if(i!=footers.length-1){
  35.                                         sb.append(",");
  36.                                 }
  37.                         }
  38.                         sb.append("}]");
  39.                 }
  40.                 sb.append("}");
  41.                 System.out.println(sb.toString());
  42.                 return sb.toString();
  43.         }
  44.        
  45.        
  46.         private static void toJson (Map<String,Object> fieldMap,Object obj,StringBuilder sb){
  47.                 Iterator<String> it = fieldMap.keySet().iterator();
  48.                 Object field,value;
  49.                 String key;
  50.                 String [] arr;
  51.                 while(it.hasNext()){
  52.                         key = it.next();
  53.                         field = fieldMap.get(key);
  54.                         if(field instanceof Map){
  55.                                 sb.append("""+key+"":{");
  56.                                 toJson((Map<String,Object>)field,obj,sb);
  57.                                 sb.append("}");
  58.                         }else if(field instanceof String[]){
  59.                                 arr = (String[])field;
  60.                                 value = TagUtil.fieldNametoValues(arr[0], obj);
  61.                                 sb.append(""" + arr[1] + """ + ":"" + value + """);
  62.                         }else{
  63.                                 value = TagUtil.fieldNametoValues((String)field, obj);
  64.                                 sb.append(""" + field + """ + ":"" + value + """);
  65.                         }
  66.                         if(it.hasNext()){
  67.                                 sb.append(",");
  68.                         }
  69.                 }
  70.         }
  71.         /**
  72.          * 组装对象,把一个对象的元素放到一起
  73.          * @param fields
  74.          * @return
  75.          */
  76.         private static Map<String, Object> getFieldMap(String[] fields) {
  77.                 Map<String,Object> results = new HashMap<String, Object>();
  78.                 for(int i = 0;i<fields.length;i++){
  79.                         if(fields[i].indexOf(".")>0){
  80.                                 judgeFields(results,fields[i].split("\\."),fields[i]);//下面的多属性字段
  81.                         }else{
  82.                                 results.put(fields[i], fields[i]);//这个对象的直接字段
  83.                         }
  84.                 }
  85.                 return results;
  86.         }
  87.        
  88.         private static void judgeFields(Map<String, Object> results, String[] param,String field) {
  89.                 Map<String,Object> temp;
  90.                 for(int i = 0;i<param.length;i++){
  91.                         if(results.containsKey(param[i])){
  92.                                 results = (Map<String,Object>)results.get(param[i]);
  93.                         }else{
  94.                                 if(i==param.length-1){
  95.                                         results.put(param[i],new String[]{field,param[i]});
  96.                                 }else{
  97.                                         temp = new HashMap<String, Object>();
  98.                                         results.put(param[i],temp);
  99.                                         results = temp;
  100.                                 }
  101.                         }
  102.                 }
  103.         }
复制代码
发表于 2013-10-24 10:18:49 | 显示全部楼层
用 \\. 转义 试试
 楼主| 发表于 2013-10-24 11:47:52 | 显示全部楼层
不是转义问题,是easy ui取值的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表