`
kidiaoer
  • 浏览: 824905 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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" class="com.yxps.action.YinyueAction">   <result type="json"></result>   </action>   <action name="syslb" class="com.yxps.action.SysLbAction">   <result type="json"></result>   </action> </package> </struts> YinyueAction.java package com.yxps.action; import java.util.List; import com.googlecode.jsonplugin.annotations.JSON; import com.yxps.entity.Yinyue; import com.yxps.service.IYinyueService; /** * 音乐业务逻辑类 * @author Administrator * */ public class YinyueAction extends BaseCRUDAction { private Yinyue yinyue; public Yinyue getYinyue() {   return yinyue; } public void setYinyue(Yinyue yinyue) {   this.yinyue = yinyue; } public Integer getStart() {   return start; } public void setStart(Integer start) {   this.start = start; } public Integer getLimit() {   return limit; } public void setLimit(Integer limit) {   this.limit = limit; } public Integer getTotal() {   return total; } public void setTotal(Integer total) {   this.total = total; } // 当前第几页 private Integer start = 0; // 每页多少条记录 private Integer limit = 5; // 总记录数 private Integer total = 0; private List<Yinyue> list; @JSON(name = "list") public List<Yinyue> getList() {   return list; } public void setList(List<Yinyue> list) {   this.list = list; } public void setYinyueService(IYinyueService yinyueService) {   this.yinyueService = yinyueService; } private IYinyueService yinyueService; @Override public String doAdd() {   // TODO Auto-generated method stub     return null; } @Override public String doDelete() {   // TODO Auto-generated method stub   return null; } /**   * 分页查询音乐:   * 参数:start:第几页、   *  limit:每页显示数量   */ @Override public String doList() {   // TODO Auto-generated method stub   //设置总数   this.total=yinyueService.getAllYinyue().size();   //查询当前页的音乐   this.list=yinyueService.findYinyueByPage(this.start,this.limit);    return this.SUCCESS; } @Override public String doUdate() {   // TODO Auto-generated method stub   return null; } } 数据访问层在此就不写了。接下来看看js Ext.onReady(function() { Ext.BLANK_IMAGE_URL = 'extjs/resources/images/default/s.gif'; Ext.QuickTips.init(); Ext.form.Field.prototype.msgTarget = 'side';//设置控件的错误信息的显示位置 /* 定义选择按钮 */ var sm = new Ext.grid.CheckboxSelectionModel(); // CheckBox选择列 var btn_test_yinyue=new Ext.Button({ text:'添加', dataIndex:'st', iconCls : 'icon-add', handler : function() {   window_add_yinyue.show(); } }); /* 定义列 */ var cm = new Ext.grid.ColumnModel([   new Ext.grid.RowNumberer(), // 行号列   sm, {   header : '编号',   dataIndex : 'id'   }, {   header : '音乐类别',   dataIndex : 'sysLb.lbmc'   }, //自定义renderer,即显示的样式,可以加html代码,来显示图片等。   {   header : '音乐名称',   dataIndex : 'yymc'   }, {   header : '试听',   dataIndex : 'yylj'   },{   header:'歌手',   dataIndex:'gsm'   },{   header:'专辑',   dataIndex:'zjm'   }   ]); /* 定义数据源 */ var ds = new Ext.data.Store({   autoLoad : false,   proxy : new Ext.data.HttpProxy({       url : 'yinyue.action?action=doList'     }),// 调用的动作   reader : new Ext.data.JsonReader({       // 记录总数参数名:名称需要跟action中对应       totalProperty : 'total',       // 查询出来的list集合:名称需要跟action中对应       root : 'list',       successProperty : 'success'     }, [{         name : 'id',         mapping : 'id',         type : 'int'       }, {         name : 'sysLb.lbmc',         mapping : 'sysLb.lbmc',         type : 'string'       }, {         name : 'yymc',         mapping : 'yymc',         type : 'string'       }, {         name : 'yylj',         mapping : 'yylj',         type : 'string'       },{name:'gsm',         mapping:'gsm',         type:'string'       },{name:'zjm',mapping:'zjm',type:'string'}             // 列的映射     ])   }); /*工具栏中的控件*/ //添加按钮 var btn_add_yinyue=new Ext.Button({ text:'添加', iconCls : 'icon-add', handler : function() {   window_add_yinyue.show(); } }); //查询按钮 var btn_search_yinyue = new Ext.Button({ text : '查询' //iconCls : 'icon-search' //handler : searchYinyue }); //编辑按钮 var btn_edit_yinyue=new Ext.Button({ text:'编辑' }); //查询文本框 var text_search_yinyue = new Ext.form.TextField({ name : 'textSearchBook', width : 200, emptyText : '多条件可用逗号或者空格隔开!' }); var btn_del_yinyue=new Ext.Button({ text:'删除' //iconCls:'icon-del' //handler:delYinyue }); var searchYinyue = function() { ds.baseParams.conditions = text_search_yinyue.getValue(); ds.load({params : {start : 0,limit : 20} }); } /* 定义DataGrid:显示数据 */ var grid = new Ext.grid.GridPanel({ ds : ds, // 数据源 sm : sm, // 选择按钮 cm : cm, // 列 autoWidth : true, autoHeight : true, // 工具栏按钮 tbar : [btn_add_yinyue, '-',btn_edit_yinyue, '-', btn_del_yinyue,'-',text_search_yinyue,'-',btn_search_yinyue], // 状态栏显示分页信息 bbar : new Ext.PagingToolbar({     store : ds,// 数据源     pageSize : 20, // 每页显示数量     displayInfo : true,     displayMsg : '显示第 {0} 条到 {1} 条记录,一共 {2} 条',     emptyMsg : "没有记录"   })   // 页脚显示分页 }); // 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] }); }); 
分享到:
评论

相关推荐

    struts2+extjs中File的upload&download;&delete;例子及说明

    ### Struts2与ExtJS集成实现文件的上传、下载与删除功能详解 #### 一、项目背景与技术栈概述 本案例旨在通过Struts2框架与ExtJS前端库的结合来实现文件的批量上传、下载以及删除功能。适用于对Struts2与ExtJS有...

    Extjs+Struts2系统后台管理框架,完美运行

    ExtJS和Struts2是两种在Web开发领域广泛使用的开源技术。ExtJS是一个JavaScript库,主要用于构建用户界面,尤其适用于创建复杂的、数据驱动的Web应用程序。而Struts2则是一个基于MVC(Model-View-Controller)设计...

    extjs tree + json+struts2示例源代码

    ExtJS Tree + JSON + Struts2 示例源代码详解 在Web开发中,构建交互式的用户界面是关键。ExtJS是一个强大的JavaScript库,尤其擅长创建桌面级的Web应用。本示例将详细介绍如何结合ExtJS的Tree组件、JSON数据格式...

    struts2+Hibernate3.3+spring2.5.6+extjs3.2 图书管理系统

    《基于Struts2+Hibernate3.3+Spring2.5.6+ExtJS3.2的图书管理系统详解》 在当今信息化社会,图书管理系统的构建是图书馆自动化、网络化的重要一环。本系统采用了一套经典的Java技术栈,即Struts2作为MVC框架、...

    extjs图书管理系统

    EXTJS图书管理系统是一款基于Web的高效、易用的图书管理应用,它结合了Struts2、Spring、iBatis和EXTJS2.2等技术,构建在SQLServer2000数据库之上。下面将详细阐述这个系统的核心组件及其作用。 1. **Struts2(json-...

    ssh+extjs开发crud--经典

    - **Struts2**:负责处理MVC(Model-View-Controller)架构中的控制器部分,管理用户请求,调度业务逻辑,并将数据传递给视图层。 - **Spring**:作为整个应用的核心容器,管理Bean的生命周期,实现依赖注入(DI),...

    ssh+extjs人力资源管理系统

    Struts2负责接收用户请求并调用业务逻辑,然后通过Spring将控制权传递给服务层,服务层处理业务逻辑并利用Hibernate与数据库交互。Spring的AOP(面向切面编程)特性可以方便地进行事务管理和权限控制,确保数据的...

    Extjs+ssh 增删改查

    ExtJS + SSH 构建Web应用的增删改查功能详解 在Web开发领域,ExtJS和SSH(Spring、Struts、Hibernate)是两种常见的技术框架。ExtJS是一款强大的JavaScript库,用于构建富客户端的用户界面,而SSH则是一个Java企业...

    Ext+dwr+Hibernate+struts进销存管理系统终于完工(含源码)

    《基于ExtJS、DWR、Hibernate和Struts的进销存管理系统详解》 在现代企业信息化建设中,进销存管理系统的应用至关重要,它能够有效整合企业的采购、销售和库存等核心业务流程,提高运营效率。本文将详细介绍一个...

    ssi框架入门详解

    **Struts2**作为MVC框架,主要负责处理HTTP请求,提供控制器功能,以及数据传递和控制流程。它使用Action和ActionForm概念,通过配置ActionMapping将用户请求映射到相应的业务逻辑。Struts2还支持多种视图技术,如...

    学生学籍管理系统

    在本项目中,Struts2可能被用来处理用户请求,将数据传递到后端,并将响应呈现给前端。 然而,描述中提到的ExtJs是一个JavaScript库,专门用于构建富客户端应用。它提供了大量的组件和布局,可以创建复杂的、数据...

    ext和ssh整合的小项目

    例如,EXT负责展示用户界面并处理用户的交互事件,而SSH则在后台处理业务逻辑和数据操作。这种结合可以创建出一个既美观又安全的Web应用,用户可以在前端进行各种操作,如填写表单、查看数据,而这些操作都会通过SSH...

    WEB开发框架选取 经验之谈

    - **JSON-Lib的应用**:使用JSON-Lib处理客户端与服务器之间传递的数据格式,提高了数据交换的效率。 #### 五、结论 综上所述,选择正确的Web开发框架组合对于项目的成功至关重要。通过综合考虑Struts、Spring、...

    JAVA+ORALCE面试题汇总

    Socket分为流式套接字(SOCK_STREAM,如TCP)和数据报套接字(SOCK_DGRAM,如UDP)两种主要类型。 #### 12. AJAX的工作原理 Asynchronous JavaScript and XML(AJAX)是一种在无需重新加载整个网页的情况下更新...

    webwork学习

    Model-Driven Action则更适用于复杂场景,通过模型对象来传递数据。 **2. ActionContext (Action上下文)** - **介绍**:ActionContext是Action执行过程中所需的各种信息的容器,如Request、Response、Session等。 -...

Global site tag (gtag.js) - Google Analytics