Think of Ext2.0 (1)

系统 1750 0

Ext2.0 的选择需要冒很大的风险,确实 Ext 在界面上能够有很大的提升,但是客户端机器的性能和网络方面的制约,再加上 Ext 本身没有很好的实现工具支持。从编码角度来说,可能需要花费更多的时间,这相对于直接的 Web 开发。如果项目中缺少美工,又对访问性能或并发量不是特别的要求的 Web 开发,可以考虑使用,譬如说安全设备的控制界面。当然项目组成员必须忍受大量 javascript 编码。  

一般来说, Ext 使用如下:

Ext 作为前台, Spring-Hibernate-Stucts 作为整体的控制层, json-lib 作为两者的交互。

当然后台是什么无所谓了,主要就是 json 字符串的拼凑

流程稍微记录了一下,后面有些不想写了,所以逻辑有些混乱。  

1.          Json-Lib

导入依赖库

commons-beanutils.jar

commons-collections-3.1.jar

commons-lang-2.1.jar

commons-logging.jar

ezmorph-1.0.4.jar

json-lib-2.2-jdk15.jar  

测试 Bean

public   class  TestBean  ... {
    String date1 
=   " 111 " ;
    
int  date2  =   10
    
public  String getDate1()  ... {
        
return  date1;
    }

    
public   void  setDate1(String date1)  ... {
        
this .date1  =  date1;
    }

    
public   int  getDate2()  ... {
        
return  date2;
    }

    
public   void  setDate2( int  date2)  ... {
        
this .date2  =  date2;
    }


}

测试代码

        JSONObject jsonBean  =  JSONObject.fromObject( new  TestBean());
        System.out.println(jsonBean);
        
        List list 
=   new  ArrayList();
        list.add(
new  TestBean());
        list.add(
new  TestBean());
        
        JSONArray jsonList 
=  JSONArray.fromObject(list);
        System.out.println(jsonList);

输出:

{"date1":"111","date2":10}

[{"date1":"111","date2":10},{"date1":"111","date2":10}]  

正式使用再做一下字符串处理

 

2.          Ext 使用

将整个 Ext2.0 的目录导入到 MyEclipse 中去

Docs 可以全部删去, example 也可删去部分

只保留 examples 根目录下的内容

examples\examples.js 中的开头修改成

Ext .BLANK_IMAGE_URL = 'ext-2.0/resources/images/default/s.gif' ;

将指向 Ext 网站的 s.gif 文件指向本地  

添加 ext-fix.js 修正 radio Form 控件从 json 数据获取信息时,工作不正常的问题

Ext.form.BasicForm.prototype.setValues  =   function (values) ... {   
      
if (values  instanceof  Array) ... {                
          
for ( var  i  =   0 , len  =  values.length; i  <  len; i ++ ) ... {   
              
var  v  =  values[i];   
              
var  f  =   this .findField(v.id);   
              
if (f) ... {   
                  
if  ( f.getEl().dom.type  ==   ' radio '  )  ... {   
                      
var  group  =   this .el.dom.elements[f.getName()];   
                      
for  ( var  i = 0 ; i  <  group.length; i ++  )  ... {   
                          
if (group[i].__ext_field)  ... {   
                              group[i].__ext_field.setValue(group[i].value 
==  v);   
                              
if ( this .trackResetOnLoad) ... {   
                                  group[i].__ext_field.originalValue 
=  group[i].__ext_field.getValue();   
                              }
   
                          }
   
                      }
   
               }
   
                
else   
                 
... {   
                    f.setValue(v.value);   
                  
if ( this .trackResetOnLoad) ... {   
                        f.originalValue 
=  f.getValue();   
                   }
   
               }
   
            }
   
        }
   
    }
else ... {   
       
var  field, id;   
       
for (id  in  values) ... {   
            
if ( typeof  values[id]  !=   ' function '   &&  (field  =   this .findField(id))) ... {   
               
if ( field.getEl().dom.type  ==   ' radio '  )  ... {   
                   
var  group  =   this .el.dom.elements[field.getName()];   
                    
for  ( var  i = 0 ; i  <  group.length; i ++  )  ... {   
                        
if (group[i].__ext_field)  ... {   
                            group[i].__ext_field.setValue(group[i].value 
==  values[id]);   
                            
if ( this .trackResetOnLoad) ... {   
                               group[i].__ext_field.originalValue 
=  group[i].__ext_field.getValue();   
                            }
   
                       }
   
                    }
   
               }
   
                
else   
                
... {   
                    field.setValue(values[id]);   
                   
if ( this .trackResetOnLoad) ... {   
                         field.originalValue 
=  field.getValue();   
                    }
   
                }
   
            }
   
         }
   
    }
   
    
return   this ;   
 }
   
  
   
  
 Ext.form.Radio.prototype.onRender 
=   function (ct, position)  ... {   
  Ext.form.Radio.superclass.onRender.call(
this , ct, position);   
   
this .el.dom.__ext_field  =   this ;   
 }
   
  
 Ext.form.Radio.prototype.setValue 
=   function (v)  ... {   
     
if (v  ===   true   ||  v  ===   ' true '   ||  v  ==   ' 1 '   ||  v  ===   false   ||  v  ===   ' false '   ||  v  ==   ' 0 '

Think of Ext2.0 (1)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论