- 浏览: 276518 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhuzhuhenzhencheng:
密码是什么啊
Ext表格(Grid)上面的悬浮提示 -
鹿惊_:
确实如雪中送炭般温暖!
Ext扩展整理后吐血奉献 -
ortega1_2_3:
该版本貌似有bug,当sockIOPool的自平衡线程self ...
Java MemCached Window简单实现 -
q6952592:
好。解决了我的兼容模式下出现的问题。
Ext表格(Grid)上面的悬浮提示 -
fei33423:
请参考 fei33423的文章 java中直接调用groovy ...
Groovy应用(Java与Groovy间相互调用)
将ExtJS Grid 中的record逐一转化为Bean,实现批量的添加或者修改
package com.hwasun.utils; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import net.sf.json.JSONSerializer; import org.junit.Test; /** * 将Ext中Store的data数据转化为Java中的List * @author JLee v .10 * @since 2011-2-25 * @function 主要是为了ext中可编辑的grid实现批量添加与修改 * 将注解的地方放开可以测试一下 */ public class Json2List { @Test //将Store中的data(即:多个record)转化为多个bean public Object JSON4Hibernate(Class clazz ,String json)throws Exception{ System.out.println("将要解析的JSON串"+json); List list = new ArrayList(); JSONObject jsonObjSplit = JSONObject.fromObject(json); JSONArray ja = jsonObjSplit.getJSONArray("data"); for (int i = 0; i < ja.size(); i++) { Object bean = clazz.newInstance() ; Class c = bean.getClass() ; Field[] fs = c.getDeclaredFields(); JSONObject jsonObject = (JSONObject) ja.get(i); for (Iterator iter = jsonObject.keys(); iter.hasNext();) { String key = (String) iter.next(); String value = jsonObject.getString(key); //为了父类赋值 适应继承 过来的ID if("id".equals(key)){ modifyId(bean,"id",value) ; } //为自己的实体每个属性赋值 for (Field f : fs) { if(f.getName().equals(key)){ Object vType = convertValueType(bean,f ,value); mf1(bean,f.getName(),vType); } } } list.add(bean) ; } return list ; } //对bean的属性进行判断,然后将JSON中的值转化为对应的类型 public Object convertValueType(Object o,Field f, String value) throws Exception { Object ov = null ; String fieldTypeName = f.getType().getName(); if (fieldTypeName.equals("int")||fieldTypeName.equals("java.lang.Integer")) { ov = value!=null&&value!="null"&&!"".equals(value)?Integer.parseInt(value):null ; } else if (fieldTypeName.equals("long")||fieldTypeName.equals("java.lang.Long")) { ov = value!=null&&value!="null"&&!"".equals(value)?Long.parseLong(value):null ; } else if (fieldTypeName.equals("float")||fieldTypeName.equals("java.lang.Float")) { ov = value!=null&&value!="null"&&!"".equals(value)?Float.parseFloat(value):null ; } else if (fieldTypeName.equals("double")||fieldTypeName.equals("java.lang.Double")) { ov = value!=null&&value!="null"&&!"".equals(value)?Double.parseDouble(value):null ; } else if (fieldTypeName.equals("boolean")||fieldTypeName.equals("java.lang.Boolean")) { ov = value!=null&&value!="null"&&!"".equals(value)?Boolean.parseBoolean(value):null ; } else if (fieldTypeName.equals("java.util.Date")) { if(value.length()>11){ ov = value!=null&&value!="null"&&!"".equals(value)?new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value):null ; }else{ ov = value!=null&&value!="null"&&!"".equals(value)?new SimpleDateFormat("yyyy-MM-dd").parse(value):null ; } } else if (fieldTypeName.equals("java.lang.String")) { ov = (String)value ; } else if (fieldTypeName.equals("java.lang.Object")) { ov = (Object)value ; } else { Field oField = o.getClass().getDeclaredField(f.getName()); if (oField != null) { oField.setAccessible(true); Object entity = oField.get(o); if (entity == null) { entity = oField.getType().newInstance(); } ov = json2Object(value ,entity); } } return ov ; } //将{name:"jlee",sex:"male",age:18,job:"student"}json格式付给bean中对应的Object属性 public Object json2Object(String json ,Object entity)throws Exception{ Class c = entity.getClass(); Field[] fs = c.getDeclaredFields(); if("[".equals(json.substring(0, 1))){ json = json.substring(1) ; } if("]".equals(json.substring(json.length()-1))){ json = json.substring(0,json.length()-1) ; } JSONObject jsonObject = (JSONObject) JSONSerializer.toJSON(json); for (Iterator iter = jsonObject.keys(); iter.hasNext();) { String key = (String)iter.next(); String value = jsonObject .getString(key) ; //为了父类赋值 适应继承 过来的ID if("id".equals(key)){ modifyId(entity,"id",value) ; } for (Field f : fs) { if(f.getName().equals(key)){ Object vType = convertValueType(entity,f ,value); mf1(entity,f.getName(),vType); } } } return entity ; } //修改bean的属性值 public void mf1(Object o , String fieldName ,Object newValue)throws Exception { Class c = o.getClass() ; Field f = c.getDeclaredField(fieldName); f.setAccessible(true); f.set(o, newValue); } //修改父类的 ID 值 public void modifyId(Object bean ,String fieldName ,String value) throws Exception{ Class c = bean.getClass().getSuperclass() ; Field[] array = c.getDeclaredFields() ; for(Field _f : array){ if(_f.getName().equals(fieldName)){ Field f = c.getDeclaredField(fieldName); Object vType = convertValueType(bean,f ,value); f.setAccessible(true); f.set(bean, vType); } } } public static void main(String[] args)throws Exception { String json = "{data:[" + "{id:'',name:'Lily',amount:'100',num:'12.3',isRight:'true',myTest:{id:'1',name:'test1',myTest:{id:'32'}}}," + "{id:'4',name:'Jim',amount:'200',num:'12.4',isRight:'false',myTest:{id:'2',name:'test2',myTest:{id:'3'}}}" + "]}"; Json2List mj = new Json2List(); Object list = mj.JSON4Hibernate(MyBean.class,json); for(MyBean mb : (List<MyBean>)list){ System.out.println("解析之后的Bean:"+mb.toString()); } } } class MyBean { private Integer id ; private String name ; private Long amount ; private boolean isRight ; private double num ; private MyTest myTest ; public MyTest getMyTest() { return myTest; } public void setMyTest(MyTest myTest) { this.myTest = myTest; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Long getAmount() { return amount; } public void setAmount(Long amount) { this.amount = amount; } public boolean getIsRight() { return isRight; } public void setIsRight(boolean isRight) { this.isRight = isRight; } public double getNum() { return num; } public void setNum(double num) { this.num = num; } @Override public String toString() { return "bean的值 { id:"+this.getId()+" name:"+this.getName() +" num:"+this.getNum()+" amount:"+this.getAmount() + " isRight:" + this.getIsRight()+ " myTest:"+this.getMyTest().toString()+" }"; } } class MyTest { private int id ; private String name ; private MyTest myTest ; public MyTest getMyTest() { return myTest; } public void setMyTest(MyTest myTest) { this.myTest = myTest; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "{id:"+this.getId()+","+"name:"+this.getName()+" myTest:{ id:"+this.getMyTest().getId()+"}"+" }"; } }
运行结果:
将要解析的JSON串{data:[{id:'',name:'Lily',amount:'100',num:'12.3',isRight:'true',myTest:{id:'1',name:'test1',myTest:{id:'32'}}},{id:'4',name:'Jim',amount:'200',num:'12.4',isRight:'false',myTest:{id:'2',name:'test2',myTest:{id:'3'}}}]}
解析之后的Bean:bean的值 { id:null name:Lily num:12.3 amount:100 isRight:true myTest:{id:1,name:test1 myTest:{ id:32} } }
解析之后的Bean:bean的值 { id:4 name:Jim num:12.4 amount:200 isRight:false myTest:{id:2,name:test2 myTest:{ id:3} } }
发表评论
-
JSON查看工具
2012-03-09 22:26 0Eclipse 的json插件: 这款插件主要功能是把jso ... -
gzip压缩JavaScript
2012-02-13 17:14 5748为了提高客户端的体验效果,RIA开发逐渐兴起。这样 ... -
Ext扩展整理后吐血奉献
2012-01-19 13:58 7193对 Ext 扩展的一些小总结 1、multicombo (多 ... -
JSON LIB转化时间
2011-11-02 09:32 1380Ext Grid显示Json lib 转化时间为object的 ... -
JS计算日期差
2011-09-24 14:04 1606function Computation(sDate1,sDa ... -
将Air文件转换为EXE进行部署
2011-06-14 17:21 1733如果你的air sdk还没有升级到2.0 那显然是不行的. ... -
禁止IE的backspace键(退格键),但输入文本框时不禁止
2011-06-09 09:59 3695Ext实现方式: Ext.getDoc().on('keyd ... -
Ext中集成在线编辑器Ext.ux.TinyMCE
2011-05-31 15:46 3104Ext.ux.TinyMCE第三方对Ext 在线编辑器的扩展, ... -
Ex的Ajax请求实现同步
2011-05-31 15:29 1365Ext2,.x的Ajax实现同步 Ext.lib.Ajax. ... -
JS实现将XML转化为JSON
2011-05-31 15:09 5594直接上代码 xmlToJson={ parser: ... -
Ext表格(Grid)上面的悬浮提示
2011-05-30 16:36 7624方法一 使用render //鼠标放在Grid上面显示提示 ... -
开发者最容易犯的13个JavaScript错误
2011-04-25 10:28 7211.for.. 数组迭代的用法 U ... -
Ext皮肤切换
2011-04-22 10:46 3353/** * @author JLee * @since ... -
JS获取屏幕大小
2011-04-18 16:56 1248<html> <script> f ... -
在js中对中文和特殊字符转码
2011-04-14 14:21 3952直接上代码 js对文字进行编码涉及3个函数:escape,e ... -
Aptana 构建 Air 项目(集成ExtJS)
2011-03-17 01:00 34771、安装Aptana IDE ... -
XTemplate
2011-03-16 14:07 4568Ext XTemplate的应用: template. ... -
读取Properties文件中的内容填充本地combo
2011-03-10 16:24 1852首先定义一个properties文件放到classpath路径 ... -
汉字转换为拼音
2011-03-09 10:11 4607首先定义一个html页面: ... -
ExtJS中submit与Ajax的success
2010-11-12 23:10 7918Ajax中使用Success使用response接收后台传来的 ...
相关推荐
### Ext中grid多行数据全部删除 在前端开发过程中,我们经常会遇到需要处理表格数据的情况。其中,ExtJS是一个非常强大的JavaScript框架,它提供了一系列工具和组件来帮助开发者快速构建复杂的用户界面。本文将详细...
修改一个grid的ColumnModel和Store A.9.3. 动态为ds添加参数baseParams A.10. 有关tree的一些小问题 A.10.1. 如何选中树中的某个节点 A.10.2. 刷新树的所有节点 A.10.3. 如果取得json中自定义的属性 A.11. 如何使用...
第3章 Ext Core实例—.NET语言实现 35 3.1 创建应用并设置开发环境 35 3.2 自定义Membership提供程序 37 3.3 创建母版页 38 3.4 首页设计 42 3.5 产品列表页 47 3.6 产品详细信息页 51 3.7 登录对话框 56 3.8 用户...
4.8.4. 当某一天,需要往form加个图片什么的,该咋办? 4.9. 还要做文件上传哟 4.10. 非想非想,单选框多选框 4.10.1. 多选呢checkbox 4.10.2. 单选呢radio 5. 雀跃吧!超脱了一切的弹出窗口。 5.1. 呵呵~跳出来和...
10.3.3 为行添加附加信息:ext.grid.featrue.rowbody / 538 10.3.4 数据汇总功能:ext.grid.featrue.abstractsummary与ext.grid.featrue. summary / 539 10.3.5 分组功能:ext.grid.featrue.grouping / 543 ...
10. **工具栏**:可以自定义Grid上方的工具栏,添加按钮、下拉框、文本框等组件,实现更多的功能,如搜索、打印、导出数据等。 11. **性能优化**:通过虚拟滚动、延迟渲染等技术,Ext GridPane在处理大量数据时仍然...
4. **数据绑定**:由于Ext JS的强大数据绑定能力,可以将DWR返回的数据动态地绑定到Grid、TreePanel或其他UI组件上,实现数据的实时更新。 5. **性能优化**:使用DWR时要注意性能优化,比如批量处理请求、缓存结果...
- **Grid多选/全选**:实现对表格行的多选和全选功能,方便批量操作。 - **可编辑的Grid**:实现对表格数据的在线编辑功能。 - **图片验证码的实现**:添加验证码功能以提高安全性。 - **TabPanel**:创建标签面板来...
在`gridPanel`中,表头的全选框功能允许用户一键选择所有行,这对于批量操作非常方便。然而,有些情况下,开发者可能希望去掉这个全选框,以满足特定的界面设计需求或业务逻辑。本篇将详细讲解如何去除`gridPanel`...
4、Grid列表和表单,包含添加、删除、批量删除、修改、查看、图片查看和按条件查询列表等功能。 5、导入导出Excel数据,支持xlsx和xls文件。 6、资源管理(菜单管理)。 7、用户管理和部门管理。 8、权限管理。不仅...