Extjs4.2与SSH框架传输json数据小例

最近刚刚接收extjs由于4.0以后的版本与之前有较大不同,图书馆的书不是很多,就照着仅有的基本看了下,然后将自己的饭店预定管理的登录和房间列表做了下数据交互,

我只写下重点,ext与后台交互 主要是在store里面配置好url fields 和reader,由于我用的是struts,  url就是action名字,extjs是支持json的,所以将数据库取出的列表放到json map里面 返回到前台下面是代码

 hibernate 和spring就不贴了     struts核心代码如下:

public String execute()
	{
		List<Room> roomlist=roomService.findAllRoom();
		ServletActionContext.getRequest().setAttribute("roomlist", roomlist);
		
		System.out.println("查找完毕");
		this.setTotalCount(roomlist.size());
		JSONArray array=JSONArray.fromObject(roomlist);
	/*	this.jsonString="{totalCount:"+this.getTotalCount()+",results:"+array.toString()+"}";*/
	/*	return SUCCESS;*/
		
		System.out.println("转换完毕");
	/*	System.out.println(jsonString);
		System.out.println(array);*/

		Map<String, Object> map = new HashMap<String, Object>();
		/*List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();*/
		/*list=roomlist;*/
		
		/*for(int i=0;i<3;i++){
			Map<String, Object> m = new HashMap<String, Object>();
			m.put("id", i);
			m.put("name", "Mic"+i);
			list.add(m);
		}*/
		map.put("results", array);
		map.put("totalCont", this.getTotalCount());
		this.setResponseJson(map);
		System.out.println(this.getResponseJson());
		
	/*	Map<String , Object> result = new HashMap<>();
		result.put("success" , true);
		// 调用业务逻辑组件的方法,获取数据,并设置成data属性
		result.put("data" , new RoomService.findAllRoom());
		// 准备输出服务器响应
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		// 将Map包装成JSONObject后输出
		out.print(new JSONObject(result));*/
	/*	this.setJsonString(jsonString);*/
		
		
		return SUCCESS;
		
		
	}

struts.xml:

  </package>
    <package name="json" extends="json-default" namespace="/">
    
    		<action name="listRoom" class="ListRoom">
          <result name="success"  type="json">
             <param name="root">responseJson</param> 
         </result>
            
       </action>
    	
    </package>

jsp页面(好像是有一种方法通过jsp页面传值,具体我没试出来,好像这种方法不是太好吧我贴2个微博地址大家去学习下把:1、 http://www.blogjava.net/fuhoujun/archive/2008/10/02/232050.html

2、http://czpae86.iteye.com/blog/632747

<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>
 <%@ taglib prefix="s" uri="/struts-tags" %>   
 <%--    <%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%> --%>
<s:property value="jsonString" escape="false" />
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<link href="ext/resources/css/ext-all.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="ext/ext-all.js"></script>
<%-- <script type="text/javascript" src="ext/ext-lang-zh_CN.js"></script> --%>
<script type="text/javascript" src="listroom.js"></script>
<title>ext表单</title>


JS代码:

Ext.onReady(function () {
    /*Ext.define('Room',
	{
		extend:'Ext.data.Model',
		fields:[{
			name:'roomid',type:'int'
		},
		{
			name:'roomname',type:'string'
		},
		{
			name:'price',type:'int'
		},
		{
			name:'category',type:'string'
		},
		{name:'status',type:'int'}]
	});*/
    /*	 var rd = new Ext.data.JsonReader({
                //总记录数
                totalProperty: 'totalCount', 
                //哪儿是数据的头,可以看action里面是怎么定义数据格式的,这里就是如何解析的           
                    root: 'results', 
                    id:'roomid',
                //有那些字段呢?
                fields:[
                         {name:'roomid'},
                         {name:'roomname'},
                         {name:'price'},
                         {name:'category'},
                         {name:'status'},
                            //这里就是对room对象进行映射的地方                        
                         {name:'roomid' ,mapping:'Room.roomid',type:'int'},
                         {name:'roomname',mapping:'Room.roomname',type:'string'},
                         {name:'price',mapping:'Room.price',type:'int'},
						{name:'category',mapping:'Room.category',type:'string'},
						{name:'status',mapping:'Room.status',type:'int'}
                         ]
                                     });*/
	/*var results = eval_r('('+jsonString+')');
	var totalCount = eval_r('('+jsonString+')');*/
	
/*	var results = eval_r('('+root+')');
	var totalCount = eval_r('('+root+')');*/
	/*var data_1=*/
	/*var roomstore = Ext.create('Ext.data.Store', {
        model:"Room",
    	
            fields: [
            
            	'category',
            	'price',
                'roomid',
                'roomname',
                'status'
            ],
        pagesize: 2,
        proxy: {
            type: 'ajax',
            url: 'listRoom2.action',
            method: 'POST',
            reader: {
            	
                type: 'json',
                root: 'results',
               
                
                totalProperty:'totalCount'
                [
                 {
                    name: 'category',
                    mapping: 'category'
                },
                {
                    name: 'price',
                    mapping: 'price'
                },
                {
                    name: 'rooid',
                    mapping: 'roomid'
                },
                {
                    name: 'roomname',
                    mapping: 'roomname'
                },  {
                    name: 'status',
                    mapping: 'status'
                }
                ]
            }
             }});*/
            /*new Ext.data.JsonReader( {
		totalProperty:totalCount,
		root:results,
		id:'roomid'
		},
		[
		{name:'rooid',mapping:'roomid'},
		{name:'roomname',mapping:'roomname'},
		{name:'price',mapping:'price'},
		{name:'category',mapping:'category'},
		{name:'status',mapping:'status'}
		])*/
        /*data:{totalCount:5,results:[{"category":"单人","price":988,"roomid":1,"roomname":"房间1","status":1},{"category":"双人","price":998,"roomid":2,"roomname":"房间2","status":1},{"category":"多人","price":9999,"roomid":3,"roomname":"总统套房","status":0},{"category":"单人","price":50,"roomid":4,"roomname":"屌丝专用","status":1},{"category":"标间","price":111,"roomid":5,"roomname":"飞机场","status":1}]}
		*/
        /*autoLoad:true*/
var roomstore = Ext.create('Ext.data.Store', {
     fields: [
            
            	'category',
            	'price',
                'roomid',
                'roomname',
                'status'
            ],
     proxy: {
         type: 'ajax',
         url: 'listRoom.action',
         reader: {
             type: 'json',
             root: 'results',
             totalproperty:'totalCount',
             id:'roomid'
         }
     },
     autoLoad: true
 });
	
   
  
  /*  roomstore.load();*/
    Ext.create('Ext.grid.Panel', {
        title: '房间信息',
        store: roomstore,
        columns: [
        
        	{
                header: '房间类型',
                dataIndex: 'category'
            },
            {
                header: '价格',
                dataIndex: 'price'
            },
            {
                header: '房间号',
                dataIndex: 'roomid'
            },
            {
                header: '房间名',
                dataIndex: 'roomname'
            },
            {
                header: '房间状态',
                dataIndex: 'status',
                renderer: function (value) {
                    if (value == '1') {
                        return '满';
                    } 
                    else
                    return '空闲';
                }
            }
        ],
        width: 600,
        autoHeight:true,
        /*loadMask: {
            msg: '数据加载中...'
        },*/
      /*  bbar: {
            xtype: 'pagingtoolbar',
            store: roomstore,
            displayInfo: true
        },*/
        renderTo: Ext.getBody()
    });
});

最后运行的效果:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
00.前言 01.教程简介_ExtJS4.2简介_SSH2基本框架搭建 02.编写几个通用的service方法、设计数据库 03.搭建ExtJS的MVC框架 04.主界面的搭建、登录功能和菜单树的生成 05.创建菜单树、前台保存用户信息 06.菜单树响应事件、我的文章模块界面搭建 07.继续搭建我的文章模块,同时实现后台查询 08.实现添加文章功、优化代码 09.实现文章类别的选择、实现添加文章的后台功能 10.实现添加文章后台的功能、实现删除功能 11.实现右键菜单的功能,自定义一个按钮 12.文章预览功能、修改文章功能 13.查看文章评审(重写分页组件的部分方法) 14.完善分页组件、查看文章评审后台功能 15.由菜单树操作右边的工作区域、完成管理员管理文章功能 16.评审文章魔模块前后台、查看我的评审 17.管理评审、完成查看我的评审功能 18.邮件管理:我的邮件前台以及后台界面搭建 19.邮件管理:发件箱、阅读邮件、删除邮件 20.发送新邮件、回复邮件——完成邮件管理功能(上) 21.发送新邮件、回复邮件——完成邮件管理功能(下) 22.用户管理,增删改查全部功能 23.文章主题管理,树形结构,动态添加、删除、修改节点(上) 24.文章主题管理,树形结构,动态添加、删除、修改节点(下) 25.个人信息模块、制作主题 26.ExtJS4.2个性主题随心制作(下) 27.ExtJS4.2个性主题随心制作(下)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值