Struts2和ExtJs之间的数据传递详解
最近在学习Extjs,发现在Struts2中支持json数据,现在共享出来,大家一起学习 Struts.xml文件:
<?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> <!-- 设置字符编码为UTF-8 --> <constant name="struts.i18n.encoding" value="UTF-8"></constant> <!-- 设置上传文件方式为jakarta --> <constant name="struts.multipart.parser" value="jakarta"></constant> <!-- 设置上传文件最大字节为:2097152 --> <constant name="struts.multipart.maxSize" value="2097152"></constant> <!-- 提交时的后缀名,如XXXX.action --> <constant name="struts.action.extension" value="action"></constant> <!-- 设置项目为开发模式 --> <constant name="struts.devMode" value="true"></constant> <!-- 资源文件若修改,则自动加载 --> <constant name="struts.i18n.reload" value="true"></constant> <!-- 主题 --> <constant name="struts.ui.theme" value="simple"></constant> <!-- 配置文件若修改,则自动加载 --> <constant name="struts.configuration.xml.reload" value="true"></constant> <!-- Spring 自动装配 --> <constant name="struts.objectFactory" value="spring"></constant> <!-- Spring配置文件若修改则 自动加载 --> <constant name="struts.objectFactory.spring.autoWire" value="type"></constant> <!-- 全局的国际化资源文件,在类型转换错误时,需要转换的信息内容在errorMassage.prop文件中定义 --> <constant name="struts.custom.i18n.resources" value="massage"></constant> <!-- Struts拦截相应的请求后分发给不同的模块来处理 --> <package name="strutspackage" extends="json-default"> <action name="yinyue" }) // 页脚显示分页 }); // el:指定html元素用于显示grid grid.render('grid3');// 渲染表格 ds.load({ // 加载数据 params : { start : 0, limit : 20 } });// 备注:limit必须和bbar中的pageSize相同 /*音乐类别下拉框数据源*/ var ds_syslb_select = new Ext.data.Store({ url : 'syslb.action?action=doList', reader : new Ext.data.JsonReader({ root : 'list' }, [{name : 'id',type : 'int'}, {name : 'lbmc',type : 'string'} ]) }); /*添加音乐FormPanel*/ var yinyueForm=new Ext.FormPanel({ [url='yinyue.action?action=doAdd]url:'yinyue.action?action=doAdd'[/url], labelAlign : 'right', labelWidth : 70, bodyStyle : 'padding:5px', border : false, fileUpload : true, baseCls : 'x-plain', items : [{ layout : 'column', border : false, baseCls : 'x-plain', items : [{ columnWidth : .5, layout : 'form', baseCls : 'x-plain', border : false, defaultType : 'textfield', defaults : {anchor : '93%'}, items : [ { xtype : 'combo', fieldLabel : '所属分类', blankText:'请选择所属分类!', id : 'id', hiddenName : 'yinyue.syslb.id', valueField : 'id', displayField : 'lbmc', mode : 'remote', store : ds_syslb_select, selectOnFocus : true, editable : false, triggerAction : 'all', loadingText : '加载中...' this.ownerCt.ownerCt.ownerCt.form.findField('book.categoryName').setValue(record.data.categoryName); // } },{ fieldLabel : '音乐名称', name : 'yinyue.yymc',maxLength : 50,allowBlank : false,blankText:'音乐名不能为空!'}, { fieldLabel : '音乐路径', name : 'yinyue.yylj',maxLength : 250,allowBlank : false,blankText:'音乐路径不能为空!'}, { fieldLabel : '歌手', name : 'yinyue.gsm',maxLength : 50,allowBlank : false,blankText:'歌手名不能为空!'}] },{ columnWidth : .5, layout : 'form', border : false, baseCls : 'x-plain', defaultType : 'textfield', defaults : {anchor : '93%'}, items : [{fieldLabel : '专辑', name : 'yinyue.zjm',maxLength : 50}, { fieldLabel : '发行时间',name : 'yinyue.fxsj',maxLength : 50}, {fieldLabel : '语种',name : 'yinyue.yz', maxLength : 50}, {fieldLabel : '唱片公司',name : 'yinyue.cpgs', maxLength : 50}] }] }], buttonAlign : 'center', minButtonWidth : 60, buttons : [{ text : '添加', handler : function(btn) { if(this.url != ""){ if (yinyueForm.getForm().isValid()) { btn.disable(); var bnfield = yinyueForm.getForm().findField('yinyue.yymc'); yinyueForm.getForm().submit({ waitTitle : '请稍候', waitMsg : '正在提交表单数据,请稍候...', success : function(form, action) { var store = grid.getStore(); //提交代码.... Ext.Msg.show({ title : '提示', msg : '[ ' + bnfield.getValue() + ' ] 添加成功!!', buttons : Ext.MessageBox.OK, icon : Ext.Msg.INFO }); bnfield.reset(); btn.enable(); }, failure : function(form, action) { Ext.Msg.show({ title : '错误提示', msg : action.result.contentTypeIsValid ? '操作失败' : '操作失败,文件类型不正确!', buttons : Ext.Msg.OK, fn : function() {bnfield.focus(true);btn.enable();}, icon : Ext.Msg.ERROR }); } }); } } } }, { text : '重置', handler : function() {this.ownerCt.form.reset();} }, { text : '取消', handler : function() {this.ownerCt.ownerCt.hide();} }] }) /*添加音乐窗口*/ var window_add_yinyue = new Ext.Window({ title : '添加音乐', width : 600, resizable : false, autoHeight : true, modal : true, closeAction : 'hide', listeners : { 'hide' : function() { this.findById('book.bookName').ownerCt.ownerCt.ownerCt.form.reset(); } }, items : [yinyueForm] }); });