`
zuimeitulip
  • 浏览: 58630 次
  • 性别: Icon_minigender_2
社区版块
存档分类
最新评论

用extJs进行表单提交返回json对象

 
阅读更多

这个例子是用extJs表单提交和struts2结合的例子。

首先,要进行编写js文件,js中文件建立一个button按钮,然后单击的时候响应下面的事件,此处就省略对于button的编写。响应的函数如下

 

 function addProgramItem() {
  firstWindow.show(); // 显示窗口
 }

 //-------------添加费率的 -------------------------
 var firstWindow = new Ext.Window({
    title : '<span class="commoncss">添加费率表单<span>', // 窗口标题
    layout : 'fit', // 设置窗口布局模式
    width : 400, // 窗口宽度
    height : 300, // 窗口高度
    closable : false, // 是否可关闭
    collapsible : true, // 是否可收缩
    maximizable : true, // 设置是否可以最大化
    border : false, // 边框线设置
    constrain : true, // 设置窗口是否可以溢出父容器
    animateTarget : Ext.getBody(),
    pageY : 20, // 页面定位Y坐标
    pageX : document.body.clientWidth / 2 - 600 / 2, // 页面定位X坐标
    items : [myForm], // 嵌入的表单面板
    buttons : [{
       text : '保    存',
      // iconCls : 'acceptIcon',
       handler : function() {
        submitTheForm();
       }
      }, {
       text : '重    置',
      // iconCls : 'tbar_synchronizeIcon',
       handler : function() {
        myForm.getForm().reset();
       }
      }, {
       text : '关    闭',
      // iconCls : 'deleteIcon',
       handler : function() {
        firstWindow.hide();
       }
      }]
   });

 

 var updateForm = new Ext.form.FormPanel({
    collapsible : false,
    border : true,
    labelWidth: 75, // label settings here cascade unless overridden
          frame:true,
          bodyStyle:'padding:5px 5px 0',
          width: 350,
          buttonAlign : 'center',
          defaults: {width: 230},
          defaultType: 'textfield',
    items: [
      {
       fieldLabel : '方案ID',
       name : 'program_id',
       readOnly : true,
       fieldClass : 'x-custom-field-disabled',
       xtype : 'textfield', // 设置为数字输入框类型
       maxLength:40
      },{
                   fieldLabel: '方案名称',
                   name: 'program_name',
                   allowBlank:false,
                   maxLength:40
               },{
                   fieldLabel: '计费模式',
                   name: 'compute_model',
                   allowBlank:false,
                   maxLength:2
               }, {
                xtype:'textarea',
                   fieldLabel: '方案描述',
                   name:'description',
                   maxLength:255
               },{
                fieldLabel:'方案状态',
                name:'tariff_program_state',
                allowBlank:false,
                maxLength:2,
                value:'00'
               },{
                fieldLabel:'操作人员',
                name:'operator',
                allowBlank:false,
                maxLength:20
               },{
                xtype:'datefield',
                fieldLabel :'操作时间',
             name:'op_time',
             allowBlank:false,
             format:'Y-m-d'
               }]
   });

 

 

 /**
  * 表单提交(表单自带Ajax提交)
  */
 function submitTheForm() {
  if (!myForm.getForm().isValid())
   return;
  myForm.form.doAction("submit",{
     url : 'program_save.action',
     waitTitle : '提示',
     method : 'POST',
     waitMsg : '正在处理数据,请稍候...',
     success : function(form, action) { // 回调函数有2个参数
      Ext.Msg.confirm('请确认', '新增成功,您要继续新增费率项目吗?', function(
          btn, text) {
         if (btn == 'yes') {
          myForm.getForm().reset();
         } else {
          firstWindow.hide();
          store.reload();
         }
        });
     },
     failure : function(form, action) {
      firstWindow.hide();
      Ext.MessageBox.alert('提示', '数据保存失败');
     }
    });
 }

 

 

当点击保存的时候就会访问program_save.action,这是struts.xml的配置,前提是struts的基本环境都配置好了,这里好像有struts的版本问题,因为我用上一个版本不知道为什么不好使。

 <package name="default" namespace="/" extends="json-default">

      <action name="program_save" class="com.action.ProgramAction" method="save">
             <result name="success" type="json"></result>
        </action>

 </package>

 

 

返回sucess就对应这表单提交后执行extjs中成功的回调函数

 public String save() throws IOException
 {
     programService.save(program);
     HttpServletResponse response = ServletActionContext.getResponse();
     PrintWriter out = response.getWriter();
     out.println("{success:true,msg:'tariff_program addd success'}");
     out.flush();
     out.close();
     return SUCCESS;
 }

分享到:
评论
2 楼 zuimeitulip 2013-03-11  
直接封装成一个Program对象,里面的属性跟表单的数据  name: 'program_name',
name: 'compute_model',一一对象就行
1 楼 alei_628 2013-01-06  
programService.save(program);
表单提交过来的数据,是直接封装成program对象了,还是一个个获取的?封闭成对象怎么封装,是在请求到达action之前就把表单数据数据封装成Java对象

相关推荐

    Extjs4的FormPanel从后台load json数据的要点

    Extjs4 表单从数据库读取数据映射到对应的字段中显示

    form表单加载复杂json数据

    form表单加载复杂json数据

    纯web在线ExtJs表单设计器

    ExtJs表单设计器是一个纯web在线设计器。通过左边的控件树进行拖拉节点到设计区进行设计和布局。设计区是通过html进行展示,尽可能的达到所见即所得的效果。预览区是通过设计区的html进行解析拼装ext的json配置,...

    SSH+ExtJs实现表单的增删改查CRUD

    用SSH为框架,前台用Extjs,数据以json格式封装,数据库采用mysql。有布局,有树形结构,有可编辑表单异步刷新,支持模糊查询。

    ExtJSWeb应用程序开发指南(第2版)

    6.9 Ext.util.JSON编码和解码Json对象 6.9.1 decode() 6.9.2 encode() 6.10 Ext.util.MixedCollection 6.10.1 向集合加入对象 6.10.2 将数组中的对象加入到集合中 6.10.3 移除集合中的对象 6.10.4 克隆...

    解决Extjs4中form表单提交后无法进入success函数问题

    1.首先得确定json格式没问题 2.在返回的json中一定得加上success为true,因为只有为true,才会进入success函数 因为刚结束Extjs4,这个错误我调试了半天。

    一个纯WEB在线EXTJS表单设计器

    ExtJs表单设计器是一个纯web在线设计器。通过左边的控件树进行拖拉节点到设计区进行设计和布局。设计区是通过html进行展示,尽可能的达到所见即所得的效果。预览区是通过设计区的html进行解析拼装ext的json配置,...

    精通JS脚本之ExtJS框架.part2.rar

    7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能详解 8.2.1 主要属性功能 8.2.2 自定义列宽度 8.2.3 执行按列排序 8.2.4 ...

    extjs4.0 实现了主页面框架 动态菜单 例子 表单 ajax

    extjs4.0 实现了主页面框架(主框架使用Ext.Viewport,banner使用Ext.panel.Panel,通过toolbar来放置按钮),包括左侧动态菜单实现(采用Ext.tree.Panel)动态从数据库加载数据来显示菜单(后台代码也在了通过json...

    轻松搞定Extjs_原创

    三、提交表单至服务器 97 四、小结 100 第十六章:更多表单组件 102 一、您能说出哪些表单组件呢? 102 二、表单组件关系图 102 三、组件配置选项介绍 103 四、完整源代码 107 五、小结 112 第十七章:悬停提示与...

    精通JS脚本之ExtJS框架.part1.rar

    7.3 ExtJS表单组件的综合应用 第8章 设计表格类布局 8.1 表格简介 8.1.1 表格的基本属性 8.1.2 制作第一个表格 8.2 表格常用功能详解 8.2.1 主要属性功能 8.2.2 自定义列宽度 8.2.3 执行按列排序 8.2.4 ...

    ExtJs与Java通信

    最完善的ExtJS与Java后台通信,两种数据传输第一种采用的是JSon,第二种是采用直接提交Form表单,个人觉得ExtJS比Flex与Java通信要简单写,呵呵。谁有WebService学习资料告诉我啊,要自己写WebService了哈。

    EXTJS+Domino的应用例子-修正

    EXTJS+Domino的应用例子 其中包括视图组件,表单封装类。 如果传递json数据,并使用extjs相关组件解析 等。有一定的参考价值

    EXTJS+Domino的应用例子

    EXTJS+Domino的应用例子 其中包括视图组件,表单封装类。...如果传递json数据,并使用extjs相关组件解析 等。有一定的参考价值 此数据库有强度加密,请不要下载了,修正地址 http://download.csdn.net/source/969800

    Ext Js权威指南(.zip.001

    7.3.4 格式化提交数据:ext.data.writer.writer、ext.data.writer.json和ext.data. writer.xml / 322 7.3.5 writer对象的配置项 / 325 7.4 数据模型 / 326 7.4.1 概述 / 326 7.4.2 数据类型及排序类型:ext....

    基于Extjs的开源控件库ExtAspNet英文版 v3.1.9

    注:ExtAspNet 基于一些开源程序,比如ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor. +2012-08-18 v3.1.9 -修正other/addtab.aspx示例的JS错误和BoundField使用Tooltip的错误(Dennis_Liu)。 +修正Window的...

    基于Extjs的开源控件库ExtAspNet中文版 v3.1.9

    注:ExtAspNet 基于一些开源程序,比如ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor. +2012-08-18 v3.1.9 -修正other/addtab.aspx示例的JS错误和BoundField使用Tooltip的错误(Dennis_Liu)。 +修正Window的...

    树形表格菜单 动态添加节点/动态删除节点/动态移动节点

    4.动态dom对象创建表格树 5.完美支持json格式数据,支持xml(需转换) 6.支持ajax加载节点 7.事件驱动 8.可以动态根据列内容排序 9.简化函数参数,利用{} object输入参数,风格类似Extjs 10.树状结构可以选择出现在某一列...

    javascript中创建对象的几种方法总结

    编程在不断的简化,可是“用户体验、性能、兼容性、可扩展……”要求却在不断提高,随之涌现出Prototype、jQuery、ExtJs、Dojo等优秀的框架(类库),大大简化了web开发。 越来越多的人开始深入研究和使用...

    ExtAspNet v3.1.0源码

    注:ExtAspNet 基于一些开源程序,比如ExtJS, HtmlAgilityPack, Nii.JSON, YUICompressor. 支持的浏览器: IE 7.0+, Firefox 3.0+, Chrome 2.0+, Opera 9.5+, Safari 3.0+ 历史升级 +2012-03-04 v3.1.0 -修正Hidden...

Global site tag (gtag.js) - Google Analytics