jueyue 发表于 2013-10-22 21:29:50

为什么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版本,但是这也是基础的。发现
http://note.youdao.com/yws/public/resource/4d957f78ff55c991ad918d82de8676ff/C66CAE7098E349E3B909663B002273FC
尼玛obj可以取值才怪呢,我差,easyui真是个人才,可怜我两个晚上
ps1:easyui源码 http://jquery-easyui.googlecode.com/svn/trunk/src/
ps2:自己昨天写的tojson /**
       * 循环LIST对象拼接EASYUI格式的JSON数据
       * @param fields
       * @param total
       * @param list
       */<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>
        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;
                                String footerFiled = footer.split(":");
                                if(footer.split(":").length==2){
                                        value = footer.split(":");
                                }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, obj);
                                sb.append("\"" + arr + "\"" + ":\"" + 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.indexOf(".")>0){
                                judgeFields(results,fields.split("\\."),fields);//下面的多属性字段
                        }else{
                                results.put(fields, fields);//这个对象的直接字段
                        }
                }
                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)){
                                results = (Map<String,Object>)results.get(param);
                        }else{
                                if(i==param.length-1){
                                        results.put(param,new String[]{field,param});
                                }else{
                                        temp = new HashMap<String, Object>();
                                        results.put(param,temp);
                                        results = temp;
                                }
                        }
                }
        }

GIN 发表于 2013-10-24 10:18:49

用 \\. 转义 试试

jueyue 发表于 2013-10-24 11:47:52

不是转义问题,是easy ui取值的问题
页: [1]
查看完整版本: 为什么jeecg没有用a.b而用了a_b