- 浏览: 552202 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
beck_iceblock:
[/color][color=white][color=oli ...
MYSQL的group_concat()函数中实现将多行同一字段数据合并成一个数据 -
瞎折腾球:
fristname 和 list name ,email填什么 ...
JetBrain WebStorm 注册码 -
瞎折腾球:
Your license key cannot be foun ...
JetBrain WebStorm 注册码 -
学习学习学习11111:
第一个可用,感谢 ,赞一个
JetBrain WebStorm 注册码 -
ichenwenjin:
不错,能用
JetBrain WebStorm 注册码
一个疑惑的问题
该问题已经获得圆满解决
用Ext 作的表单以 p.name 这样的方式提交给 struct2的时候 获取不到值
或者 只能通过 request.getParmter("***")获取ext表单里的值吗?
应该如何配置请大家给一点意见
js 代码如下
JAVA Struct action 里的代码为
Struct 配置文件
实体类ProductEntity代码如下
该问题已经获得圆满解决
用Ext 作的表单以 p.name 这样的方式提交给 struct2的时候 获取不到值
或者 只能通过 request.getParmter("***")获取ext表单里的值吗?
应该如何配置请大家给一点意见
js 代码如下
/********创建FormPanel*******/ ProductFormPanel = Ext.extend(Ext.form.FormPanel,{ constructor:function(){ ProductFormPanel.superclass.constructor.call(this, { labelWidth:60, defaultType:'textfield', defaults:{anchor:'90%'}, baseCls:'x-plain', items:[ {fieldLabel:'名称',name:'p.name'},// ProductEntuty 里的属性 name {fieldLabel:'数量',name:'p.num'},// ProductEntuty 里的属性 num {fieldLabel:'类别', hiddenName:'p.type',// ProductEntuty 里的属性 type xtype:'combo', mode:'local', displayField:'type', readOnly:true, triggerAction:'all', value:'洗件', store:new Ext.data.SimpleStore({ fields:['type'], data:[['洗件'],['固件']] }) }, { fieldLabel:'生产日期', xtype:'datefield', format:'Y-m-d G:i:s', name:'p.date' // ProductEntuty 里的属性 date }, { fieldLabel:'是否合格', hiddenName:'p.check', // ProductEntuty 里的属性 date xtype:'combo', model:'local', displayField:'check', readOnly:true, triggerAction:'all', value:'合格', store:new Ext.data.SimpleStore({ fields:['check'], data:[['合格'],['不合格']] }) } ] }) }, submit:function(){ //表单服务器的提交方法 this.getForm().submit({ url:'Productaction_test.action', method:'POST', success:function(form,action){msg('fb','b');}, failure:function(form,action){msg('fa','a');} }); }, reset:function(){ this.getForm().reset(); }, getValue:function(){ if(this.getForm().isValid()){ return new Ext.data.Record(this.getForm().getValues()); }else{ throw Error('表单未能通过!'); } }, setValue:function(_r){ this.getForm().loadRecord(_r); } }); /*******创建Windows*********/ ProductWindows = Ext.extend(Ext.Window,{ form: new ProductFormPanel(), constructor:function(){ this.form = new ProductFormPanel(); ProductWindows.superclass.constructor.call(this, { plain:true, width:300, modal:true, items:this.form, closeAction:'hide', buttons:[ { text:'确定', handler:this.onSubmitClick, scope:this }, { text:'取消', handler:this.onCancelClick, scope:this }] } ); this.addEvents('submit'); }, close:function(){ this.form.reset(); this.hide(); }, onCancelClick:function(){ this.close(); }, onSubmitClick:function(){ try{ //调用表单提交服务器的方法 //this.form.submit(); this.fireEvent('submit',this,this.form.getValue()); /*问题出在这个地方了 因为Form的AJAX提交是异步执行的所以浏览器在提交的同时 又把this.form.reset() 方法执行了一遍 搞整整28个小时 后来还PeTiRo网友指出了问题的所在 把this.form.reset();去掉就OK了 谢谢 PTR this.form.reset();*/ // this.close(); }catch(_err){ alert(_err.message); return; } } }); /*******创建InsertWin*******/ InsertProductWin = Ext.extend(ProductWindows,{ title:'添加产品' }); /*******创建UpdateWin*******/ UpdateProductWin = Ext.extend(ProductWindows,{ load:function(_r){this.form.setValue(_r);}, title:'修改产品' }); /*******创建GridPanel*******/ var data = [ {name:'GH-2323零件',type:'固件',num:18,date:'2009-7-11 00:00:00',check:'合格'}, {name:'8846零件',type:'洗件',num:20,date:'2009-8-20',check:'不合格'}]; var store = new Ext.data.JsonStore({ // data:data, url:'data/data.jsp', autoLoad:true, fields:['name','type','num','date','check'] }); var cb = new Ext.grid.CheckboxSelectionModel(); var cm = new Ext.grid.ColumnModel([ new Ext.grid.RowNumberer(), cb, {dataIndex:'name',header:'名称',sortable:true}, {dataIndex:'type',header:'类别',sortable:true}, {dataIndex:'num',header:'数量',sortable:true}, {dataIndex:'date',header:'生产日期',sortable:true}, {dataIndex:'check',header:'是否合格',sortable:true} ]); ProductGridPanel = Ext.extend(Ext.grid.GridPanel,{ insertwin:new InsertProductWin(), updatewin:new UpdateProductWin(), constructor:function(){ ProductGridPanel.superclass.constructor.call(this,{ cm:cm, region:'center', height:500, width:'auto', store:store, border:false, stripeRows:true, sm:cb, title:'测试', tbar:[ { text:'添加记录', handler:function(){this.insertwin.show();}, scope:this }, '-', { text:'修改记录', handler:function(){ try{ this.updatewin.show(); this.updatewin.load(this.getSelected()); }catch(_err){ msg('系统提示', _err.message); this.updatewin.hide(); } }, scope:this }, '-', { text:'删除记录', handler:function(){ Ext.MessageBox.confirm('系统提示','您确定要删除所选的信息吗!',this.removePerson,this); var a = this.getSelecteds(); for(var i = 0;i<a.length;i++){ this.getStore().remove(a[i]); } }, scope:this }] }), this.insertwin.on('submit',this.onInsertWinSubmit,this); this.updatewin.on('submit',this.onUpdateWinSubmit,this); this.addEvents('rowselect'); }, getSelecteds:function(){ var _sm = this.getSelectionModel(); return _sm.getSelections(); }, getSelected:function(){ var _sm = this.getSelectionModel(); var a = _sm.getSelected(); if(_sm.getCount()==0) { throw Error('请选择一条记录!'); }else if(_sm.getCount()>1){ throw Error('只能选择一条记录!'); } return _sm.getSelected(); }, onRowSelect:function(_sel,_index,_r){ this.fireEvent('rowselect',_r); }, removePerson:function(btn){ if(btn=='yes'){ this.remove(); } }, remove:function(){ var a = this.getSelecteds(); for(var i = 0;i<a.length;i++){ this.getStore().remove(a[i]); } }, insert:function(_r){ this.getStore().add(_r); }, update:function(_r){ var st = this.getSelected(); var data = st.data; for(var i in data){ st.set(i,_r.get(i)); } sr.commit(); }, onUpdateWinSubmit:function(_win,_r){ this.update(_r); }, onInsertWinSubmit:function(_win,_r){ var me = this;//这个是大漠帮我搞的 首先感谢大漠穷秋 /* 因为在_win.form.getForm().submit里的执行到success里的function 中调用 this.insert(_r)这里的this 就是指 _win.form.getForm().submit这个类,所以说这个类里没有insert方法会报错 如果 用me.insert() 的话 就会执行成功 */ _win.form.getForm().submit({ url:'Productaction_saveUser.action', method:'POST', success:function(form,action){ msg('fb','b'); flag = true; alert(flag); /* 这个写上会说 insert 不是一个function(方法) 为什么呢 this.insert(_r); */ Ext.MessageBox.confirm('系统提示','添加成功,是否继续!',function(btn){ if(btn=='no'){ _win.hide(); } },this); }, failure:function(form,action){msg('fa','a');} }); /*下面这个if为什么不执行了呢 如何能让他执行 */ if(flag==true){ alert('s'); this.insert(_r); } } }); Ext.onReady(function(){ var grid = new ProductGridPanel(); var view = new Ext.Viewport({ renderTo:Ext.getBody(), items:[grid] }); });
JAVA Struct action 里的代码为
public class ProductAction extends BaseAction { public static final String SUCCESS_MANAGER = "success_manager"; private ProductEntity p; public ProductEntity getP() { return p; } public void setP(ProductEntity p) { this.p = p; } public String test() throws Exception{ System.out.println("这一行是可以输出"+getRequest().getParameter("p.type")+"-"); System.out.println("这一行输出s-"+p.getName()+"-"); super.outJsonString("{success:true,msg:'成功加载'}"); return null; }}
Struct 配置文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="back" extends="struts-default" namespace="/"> <global-results> <result name="done">result.jsp</result> </global-results> <action name="*action_*" class="com.ysu.action.{1}Action" method="{2}"> <!-- 有这个配置的话tomcat起动的时候就会报错 <result type="json"> <param name="includeProperties">success</param> </result> --> </action> </package> </struts>
实体类ProductEntity代码如下
public class ProductEntity implements java.io.Serializable{ private String name; private String num; private Date date; private String type; private String check; //省略了它的get和set方法 }
评论
2 楼
peter2009
2009-11-11
我看bmsh
http://yourgame.iteye.com/blog/252853
这个项目都用的p.name这种方式 可以成功的 我就一直不是很理解
还是 稳妥一些用属性名吧
还有一个问题 就是想提交在服务器端成功后
在到本地执行一下ProductGridPanel的这个方法
insert:function(_r){this.getStore().add(_r);},
应该如何弄呀!
http://yourgame.iteye.com/blog/252853
这个项目都用的p.name这种方式 可以成功的 我就一直不是很理解
还是 稳妥一些用属性名吧
还有一个问题 就是想提交在服务器端成功后
在到本地执行一下ProductGridPanel的这个方法
insert:function(_r){this.getStore().add(_r);},
应该如何弄呀!
1 楼
damoqiongqiu
2009-11-11
hiddenName与Java类中的属性名应该对应,另外,不要用p.name这种方式,"."是一个运算符,不要用这样的名字
发表评论
-
理解转义的奥秘了
2013-04-25 16:51 889_o.innerHTML += '<div class= ... -
Sencha Touch2 后退按钮的导航应用
2012-05-29 16:13 4963Sencha Touch2 后退按钮的导航应用 系统中设置几个 ... -
可以将Upload控件里面的内容清空的代码
2012-02-20 08:53 1155_win.form.getForm().getEl().dom ... -
表单验证
2011-09-08 08:56 858{ xtype:'textfield', ... -
用JS获取请求地址中的参数和值
2011-08-30 10:33 3044unction GetUrlParameter(paramNa ... -
ExtJs 与 Structs2交互的几大总结
2011-08-05 08:36 2485package com.ysu.core.action; ... -
写一个Ext控件的理论
2011-08-05 08:29 1040经大漠穷秋的点拨 编写一个Ext的控件要注意一下 ini ... -
关于Ext从Tree向Tree拖拽的问题
2011-07-28 09:54 3078将TreePanel的数据向GridPanel中拖拽的功能! ... -
Ext Combox在手动输入的时候hiddenName和name不能重复
2010-09-16 13:26 2941... -
关于GridPanel中 行操作参数传递的问题
2010-09-16 11:01 1202var outcm = new Ext.grid.Colu ... -
关于两个form中 Ext DateField 表单的验证
2010-09-05 14:41 2988//判断两个日期差 Ext.apply(Ext.form ... -
Ext Grid 查询并能分页的代码
2010-08-06 15:03 1818最终完整代码为 onQueryWinSubmit:fu ... -
Ext TabPanel 的竖排布局
2010-03-01 12:37 1574TabPanel 这样能布局吗! 想把这个变成下面那幅图的样 ... -
轻松修改TreePanel 的图标样式 和 背景图片
2010-02-09 14:26 7312给树形结构定义图标 的css .x-tree-node- ... -
我转载了 kakarot-java 永久域名 http://kakarot-java.javaeye.com 的文章
2010-02-03 15:49 929在Ext form 中的 field 中的fieldLabel ... -
Ext+Struct2 纯OO实现相互交互
2009-11-11 14:48 1858折腾了两天 终于弄明白了是这样一回事 js 代码为 ... -
怎么获得tabpanel有多少孩子啊
2009-11-10 14:47 912怎么获得tabpanel有多少孩子啊 tabPanel. ... -
ProductGridPanel 那个rowselect的事件那样用会照成死循环吗
2009-11-09 09:24 1910见一下代码 那个rowselect ... -
Ext TreeGrid 点滴
2009-11-07 12:31 5480关于Ext TreeGrid 的的随笔 在store的数据集 ...
相关推荐
Struts2和EXTJS是两种在Web开发中广泛使用的开源技术。Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它极大地简化了Java Web应用程序的开发过程。EXTJS则是一个JavaScript库,用于构建富...
要实现文件和参数的共同上传,我们需要在Ext3.2的表单中添加一个`FileInput`组件,然后配置Struts的Action来接收并处理上传请求。在表单提交时,`FileInput`会将选定的文件转换成二进制流,并与其他表单字段一起发送...
Ext_struts2是一个结合了Ext JS前端框架与Struts2后端MVC框架的整合应用,旨在提升Web应用的用户体验和开发效率。Struts2是一个强大的、基于Java的开源MVC框架,它提供了模型-视图-控制器模式的实现,以帮助开发者...
EXT是一个强大的JavaScript库,它提供了丰富的用户界面组件和交互效果,而Struts2是Java EE平台上的一个MVC框架,用于处理业务逻辑和控制应用程序流程。 在EXT中,文件上传通常通过EXT.form.FileField组件实现,这...
Ext的表单组件可以用于输入成绩,Struts2的Action类接收并处理这些数据,然后更新到数据库。 3. **成绩查询**:学生和教师可以按姓名、班级等方式查询成绩。Ext可以创建动态的查询条件,Struts2处理查询请求,返回...
ExtJS 是一个用于创建富客户端界面的JavaScript库,而Struts2 是一个基于MVC模式的Java Web框架,两者结合可以提供优秀的用户体验和强大的服务器端管理。 在整合Struts2 和 ExtJS 时,首先需要确保开发环境的兼容性...
在IT领域,构建高效、可扩展的企业级应用是至关重要的,而"Ext2.0+Struts2+Spring2.5+Ibatis2"的组合就是一种常见的技术栈,用于实现这样的目标。这个技术组合提供了从用户界面到数据访问的全方位解决方案。 **Ext...
EXT 和 Struts2 是两种广泛使用的 Java Web 开发框架,它们在构建动态、交互式的用户界面和处理服务器端业务逻辑方面都有出色的表现。EXT 主要是前端的 JavaScript 框架,提供丰富的组件库和强大的数据绑定功能,而 ...
总的来说,"Ext+struts+ibatis 完整项目"是一个全面展示Java Web开发流程的实例,涵盖了前端、后端以及数据库操作的各个环节,对于学习和实践这一技术栈的开发者来说,是一个宝贵的参考资料。通过深入研究这个项目,...
4. 表单处理:EXTJS2的表单组件可以与Struts2的表单验证相结合,实现客户端和服务器端的双重验证。 5. 动态加载:EXTJS2的Ajax功能可以实现页面部分内容的异步加载,提升用户体验。 6. 页面布局:EXTJS2的布局管理...
2. **表单提交**:当用户选择好文件后,可以通过`Ext.Ajax.request`或者`Ext.form.Basic.submit`方法将表单数据发送到服务器。表单数据会封装在一个FormData对象中,方便Struts2处理。 3. **Struts2配置**:在...
这个框架集合了Struts2作为MVC框架,Spring作为依赖注入和事务管理工具,Ibatis作为持久层解决方案,以及Ext JS作为前端用户界面组件库。下面我们将详细探讨这些技术以及它们在项目中的应用。 **1. Struts2** ...
Struts2、Spring2.5、EXT和JSON是四个在Web开发中至关重要的技术,它们共同构建了高效、灵活和可扩展的Web应用程序。这里,我们深入探讨这四个技术及其在实际项目中的应用。 首先,Struts2是一个基于MVC(Model-...
5. **安全性考虑**:Struts2 和 EXTJS 结合使用时,需要注意安全问题,如防止 SQL 注入、XSS 攻击等。Struts2 有内置的安全插件,但需要正确配置和使用。EXTJS 在处理用户输入时也需进行适当的验证和编码。 总结,...
### EXT异步提交FORM表单...通过以上内容,我们不仅了解了EXT异步提交FORM表单的具体实现细节,还深入探讨了其与Struts2/Spring2.5框架的集成方法。这将有助于开发者更好地利用这些技术栈构建高效稳定的Web应用程序。
首先,EXT 提供的组件如表格、面板、表单等可以通过 JSON 数据进行填充,使得数据的展示和交互更加直观。JSON 作为数据交换格式,可以方便地在后端(如 Struts 控制器)与前端(EXT UI)之间传递数据。 Struts 框架...
Struts2是一个强大的MVC(模型-视图-控制器)框架,它在Java Web开发中广泛应用,用于构建可维护性和可扩展性高的企业级应用程序。ExtJS(现称为Sencha Ext JS)则是一个富客户端JavaScript库,用于创建交互式、数据...
在IT行业中,Web开发是一个重要的领域,而Struts2和EXT是两个常用的技术框架。本文将详细介绍如何将它们整合以实现一个登录功能。 Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它极大地...
本实例主要关注"ext+struts2"的集成,这是一种常见的Java Web开发组合,其中ext是一个强大的JavaScript库,用于构建富客户端应用,而Struts2是基于MVC设计模式的Java Web框架,负责后端业务逻辑处理和页面展示的组织...
这个项目是一个综合性的Web应用程序,它结合了三种主流的Java技术:EXT(一个富客户端JavaScript框架),Spring(一个全面的企业级应用框架)和Struts2(一个MVC框架)。EXT主要用于创建交互性强、用户体验良好的...