- 浏览: 152364 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (51)
- Ext (8)
- div+css (1)
- struts2 (0)
- 数据库 (4)
- 通用知识 (12)
- 生活轨迹 (1)
- tomcat (1)
- CXF (0)
- Flex (0)
- Java Applet (0)
- mybatis (1)
- JavaFX (5)
- NetBeans常见问题 (1)
- JQuery (0)
- struts (1)
- JDK (3)
- perl (0)
- xml (2)
- 句柄 (1)
- axis (2)
- IDEA (5)
- Java (4)
- 网络流 (0)
- ckeditor (1)
- 一些带完成的开源功能 (0)
- 虚拟化 (2)
- jgroup (1)
- 集群 (1)
- 临时 (0)
- 玩具故事 (0)
- gradle (2)
- git (1)
- openstack (0)
- linux (0)
- ubuntu (0)
- html (1)
- maven (1)
最新评论
-
wdjhz:
感激不尽。。昨晚找了一晚的资料都没找到详细说明。。看到你的de ...
如何在TableView的列中自定义渲染
需求:
为了很方便的批量修改数据,存在着将数据批量传递到后台的场景
1.数组的方式
如我们一次选择了多个文件,需要将多个选择的文件的文件路径传递到后台(获取文件路径是采用applet的方式,可能是安全的原因FF中获取不到文件路径)
类似的html:
后台Action中定义一个有set方法的数组,这样提交到后台之后会自动形成List如:
2.json字符串的方式
还存在着这样的场景,如可编辑的EditorGridPanel,如果数据是可以修改的,那如何将修改后的数据传给后台,这里就只能传递json字符串了,然后后台手动的映射json字符串到java对象
如定义了一个Grid:
当增加或者修改完多行后,提交数据到后台
RemoteMethods:
后台的Action定义一个变量jsonData
为了很方便的批量修改数据,存在着将数据批量传递到后台的场景
1.数组的方式
如我们一次选择了多个文件,需要将多个选择的文件的文件路径传递到后台(获取文件路径是采用applet的方式,可能是安全的原因FF中获取不到文件路径)
submitFiles:function() { var fileNodes = Ext.query('//input[@name="files"]','inputDiv'); var fileNames = "{"; for (i = 0; i < fileNodes.length; i++) { if (i != fileNodes.length - 1) fileNames += "'fileNameList[" + i + "]':'" + fileNodes[i].value + "',"; else fileNames += "'fileNameList[" + i + "]':'" + fileNodes[i].value + "'"; } fileNames += "}"; var submitCallback = function(jsonData){ Global.outputInfo('info','submit success'); } //replace the '\' to the '\\' var myPat = /%5C/g; //this is using regular expression to define the escaped version of a backslash fileNames = escape(fileNames); fileNames = fileNames.replace(myPat,"%5C%5C"); fileNames = unescape(fileNames); RemoteMethods.RequestSubmitAuditTask(Ext.decode(fileNames),submitCallback,this); }
类似的html:
<div id="rowDiv_1"><input id="file_1" name="files" size="80" type="text"><input value="Search" onclick="document.FileUploadApplet.openFileDialog('file_1', 'onFileDialogFile', 'onFileDialogCancel')" type="button"><span onclick="Ext.get('rowDiv_1').remove()" style="font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 15); text-decoration: underline;">remove</span></div><div id="rowDiv_2"><input id="file_2" name="files" size="80" type="text"><input value="Search" onclick="document.FileUploadApplet.openFileDialog('file_2', 'onFileDialogFile', 'onFileDialogCancel')" type="button"><span onclick="Ext.get('rowDiv_2').remove()" style="font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 15); text-decoration: underline;">remove</span></div><div id="rowDiv_3"><input id="file_3" name="files" size="80" type="text"><input value="Search" onclick="document.FileUploadApplet.openFileDialog('file_3', 'onFileDialogFile', 'onFileDialogCancel')" type="button"><span onclick="Ext.get('rowDiv_3').remove()" style="font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 10px; line-height: normal; font-size-adjust: none; font-stretch: normal; color: rgb(0, 0, 15); text-decoration: underline;">remove</span></div><div style="width: 100px; font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; font-size: 12px; line-height: normal; font-size-adjust: none; font-stretch: normal; -x-system-font: none; text-decoration: underline;" id="tipDiv">Add a New Attach</div>
后台Action中定义一个有set方法的数组,这样提交到后台之后会自动形成List如:
private java.util.List fileNameList; ....
2.json字符串的方式
还存在着这样的场景,如可编辑的EditorGridPanel,如果数据是可以修改的,那如何将修改后的数据传给后台,这里就只能传递json字符串了,然后后台手动的映射json字符串到java对象
如定义了一个Grid:
var fm = Ext.form; // Column Model shortcut array var cols = [ {id:'header',header: "header", width: 160, sortable: true, dataIndex: 'header', editor: new fm.TextField({ allowBlank: false })}, {header: "width", width: 50, sortable: true, dataIndex: 'width', editor: new fm.NumberField({ allowBlank: false })}, {header: "align", width: 50, sortable: true, dataIndex: 'align', editor: new fm.TextField({ allowBlank: false })} ]; var gridStore = new Ext.data.JsonStore({ fields : fields, url:'query_columnConfig.do?columnConfig.configType=' + config.configType +"&columnConfig.isInitConfig="+config.isInitConfig+ "&columnConfig.hidden=false", pruneModifiedRecords :true, root : 'results' }); gridStore .load(); // create the destination Grid this.grid = new Ext.grid.EditorGridPanel({ store : gridStore, columns : cols, enableDragDrop : true, stripeRows : true, trackMouseOver :true, autoExpandColumn : 'header', sm: new Ext.grid.RowSelectionModel({}), title : 'Visable Grid' });
当增加或者修改完多行后,提交数据到后台
saveModifiedRow:function(actionName) { var appendRecordStrFn = function(record) { record.data.indexNo = this.indexOf(record); //here this represent the store modifyRecordStr += Ext.encode(record.data) + ","; } var modifyRecordStr = "["; var modifiedRecords = this.grid.store.getModifiedRecords(); Ext.each(modifiedRecords , appendRecordStrFn, this.grid.store); modifyRecordStr += "]"; var returnFunction = function() { alert('success'); } RemoteMethods.RequestColumnConfigAction(actionName, {jsonData:modifyRecordStr}, returnFunction, this); }
RemoteMethods:
RemoteMethods = function() { }; RemoteMethods.prototype = { RequestColumnConfigAction:function(actionName,condtion, OnSuccess, scope) { this._invoke(actionName, condtion, OnSuccess, scope); }, _invoke: function(action, paramsObj, OnSuccess, scope) { Ext.Ajax.timeout = 100000; //The timeout in milliseconds to be used for requests,when out of it deduce the error Ext.Ajax.request({ url:action, method: 'post', params:paramsObj, scope: scope, callback: function(options, success, response) { var result = Ext.decode(response.responseText); if (success) { if (OnSuccess) { OnSuccess.call(scope, result); } } else { var msg = (result && result.Message) ? result.Message : 'Some error happend. Please try again'; Ext.MessageBox.alert('Error', msg); } } }); } }
后台的Action定义一个变量jsonData
private String jsonData; .... //getter,setter方法 ... public String submit(){ JSONArray jsonArr = JSONArray.fromObject(this.jsonData); for (int i = 0; i < jsonArr.size(); i++) { JSONObject jsonObj = jsonArr.getJSONObject(i); JSONObject.toBean(jsonObj); ColumnConfig tmpColumnConfig = new ColumnConfig(); jsonObj2JavaObj(jsonObj, tmpColumnConfig);//自动映射为java对象 ..... } } public static void jsonObj2JavaObj(JSONObject jsonObj, Object destObj) { Iterator itor = jsonObj.entrySet().iterator(); while (itor.hasNext()) { Map.Entry entry = ((Map.Entry) (itor.next())); String key = entry.getKey().toString(); Object[] values = new Object[]{entry.getValue()}; try { String method = key.replaceFirst(key.substring(0, 1), key.substring(0, 1).toUpperCase()); Class[] parameterTypes = new Class[]{destObj.getClass().getMethod("get" + method, null).getReturnType()}; Method obj2method = destObj.getClass().getMethod("set" + method, parameterTypes); if (obj2method == null)//存在源对象比目标对象的成员变量多的情况,就不处理 continue; obj2method.invoke(destObj, values); } catch (Exception e) { logger.error("", e); } } }
发表评论
-
<a>bbbbb</a>
2013-11-19 10:15 0<l>yyyyyyyyyyyyyyyyyyyyyy ... -
给Element添加事件,出现事件重复的奇怪问题
2009-11-06 10:43 1766在给Element添加事件的时候,会出现事件重复的情况 如下例 ... -
如何解决Ext中 中文乱码的问题
2009-10-23 16:42 2439提供一种方法:全站式UTF-8编码的方式 1.js中出现的中文 ... -
如何构建动态的Grid的列
2009-10-23 16:14 1091存在这样的需求,即如果显示的Grid的列是通过配置获取的,如何 ... -
如何设置自定义tools的可见与非可见(panel,grid等)
2009-10-19 15:09 1704如果我们自定义了一个panel(id:'testPanel') ... -
如何移除某个监听器
2009-10-19 10:30 2570如我们对一个treeloader增加一个监听器load,并且传 ... -
Ext中如何展现复杂的xml文件
2009-10-15 10:40 1687需求就是如何将xml文件能够界面美观的展现出来? 其实有几种的 ... -
Ext中Grid加载数据完成后自动选择第一行
2009-10-15 10:02 7233问题如题。。 解决方法就是必须等待Grid渲染完成之后,再lo ...
相关推荐
【标题】"Ext+struts+ibatis 完整项目" 涉及的技术栈是Web开发中的经典组合,主要用于构建高效、可扩展的企业级应用。这个项目虽然规模不大,但包含了实现一个完整Web应用程序所需的关键组件和流程,是学习和理解这...
《EXT+STRUTS2构建的学生信息管理系统详解》 在当今信息化社会,高效的数据管理和信息处理是各类组织不可或缺的能力。本文将深入探讨基于EXT和STRUTS2技术框架构建的学生信息管理系统,阐述其核心功能、架构设计...
"EXT+Struts2"是一个常见的技术组合,用于构建企业级的Web应用程序,特别是涉及到文件上传功能时。EXT是一个强大的JavaScript库,它提供了丰富的用户界面组件和交互效果,而Struts2是Java EE平台上的一个MVC框架,...
【标题】"Ext+struts学生管理系统"是一个基于前端Ext框架和后端Struts框架的教育信息化管理系统。这个系统主要用于管理学生信息,实现数据的增删改查等基本功能,同时也可能包括成绩管理、课程安排等多种实用功能。...
《基于Ext+Struts2的学生成绩管理系统详解》 在现代信息技术的推动下,教育领域的信息化管理已经成为不可或缺的一部分。学生成绩管理系统的构建,旨在提高教学管理效率,减轻教师的工作负担,为教学决策提供数据...
用EXT+struts2+spring+hibernate做的一个增删改查实例,主要用到了EXTjs里面的部分组件,用JSON与服务端交互,实现一个增删改查的功能!本地MYsql数据库,sql文件在根目录下面,建好库既可以运行!当然,还是需要在...
在这个“EXT+STRUTS2 经典例子”中,我们将探讨如何将两者结合,通过 JSON 方式进行通信,实现高效的数据交互。 首先,EXT(Ext JS)是一个强大的客户端 JavaScript 库,它提供了大量的 UI 组件,如表格、面板、...
标题 "GWT+EXT+STRUTS2+Eclipse完整范例.rar" 提示我们这是一个包含一个集成开发环境Eclipse的项目,该项目集成了Google Web Toolkit (GWT), EXT JS 和Struts2框架。描述 "整合 GWT EXT STRUTS2 Eclipse 范例" 明确...
这个“ext+struts+spring小例子”是一个整合这三个技术的示例项目,用于实现一个图书管理应用。下面将详细阐述这三个框架的核心概念及其在项目中的作用。 EXT JS 是一个强大的JavaScript库,主要用于构建富客户端...
在这个"Ext+struts2项目"中,我们可以看到这两个技术的集成应用。 首先,Struts2是Apache软件基金会的一个开源MVC框架,它基于Model-View-Controller(模型-视图-控制器)架构模式,为Java EE平台提供了强大的控制...
此外,还可以学习到如何配置 Struts 的配置文件(struts-config.xml)以及EXT的配置文件,了解两者之间的数据传递方式。 通过对这个系统的学习,开发者不仅可以掌握 EXT 和 Struts1.2 的基本用法,还能深入理解如何将...
一个Ext3 + struts2 + mysql的程序,主要功能是做了一个员工考勤系统,程序采用ext + action + dao的分层结构。代码大概有3000行,功能包括基本的增删改查、头像上传、分页、拦截器等功能,还用ext做了部分前台,有...
标题中的“一个ext+spring+hibernate+struts2做的系统”指的是一个基于四大开源框架构建的企业级Java Web应用程序。这些框架分别是EXT JS(一个用于构建富客户端界面的JavaScript库)、Spring(一个全面的Java企业...
本实例主要关注"ext+struts2"的集成,这是一种常见的Java Web开发组合,其中ext是一个强大的JavaScript库,用于构建富客户端应用,而Struts2是基于MVC设计模式的Java Web框架,负责后端业务逻辑处理和页面展示的组织...
在IT行业中,Web开发是一个重要的领域,而Struts2和EXT是两个常用的技术框架。本文将详细介绍如何将它们整合以实现一个登录功能。 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它极大地...
在IT行业中,EXT和Struts2是两个非常重要的框架,它们分别用于构建用户界面和处理后端业务逻辑。本文将详细介绍EXT与Struts2的结合使用,并通过标题和描述中的关键词,如“树”、“gridpanel”、“分页”、“文件...
"ext+Struts2+Spring+Hibernate 树型菜单"是一个典型的Java Web开发框架组合,用于创建具有树状结构的用户界面,通常用于数据的层级展示,比如部门结构、文件目录等。下面将详细解释这些技术和如何协同工作。 **...
在IT行业中,"Ext+Struts1.2整合"是一个常见的Web开发技术组合,涉及到两个主要的开源框架:ExtJS(一个JavaScript库)和Struts1.2(一个Java服务器端MVC框架)。这两个框架的整合是为了解决前端用户界面的丰富性和...
它负责处理前端提交的请求,并将数据传递到后端进行处理。在文件上传场景中,Struts2提供了Action类和拦截器来接收并处理文件。 实现多文件上传的关键步骤如下: 1. **前端准备**:在ExtJS中,使用`Ext.form....
EXT+Struts1+Spring2+Hibernate3学籍管理系统是一个基于Java技术的Web应用程序,用于管理教育机构的学籍信息。这个系统的核心是利用一系列成熟的框架和技术,为数据存储、业务逻辑处理和用户界面交互提供了高效且...