将后台数据传到前台JSON应用

先看看源代码:

_page=voucher4TestCSharp.queryForPagePDF(admdivcode,styeay, 
        		vtcode,star_voucherno,curPage, pageSize);
        	
        if(_page!=null){
        	list = _page.getResultList();
        }
        listMap = new ArrayList<Map<String,String>>();
        
     	for(VoucherDTO_PDF newVoucherDTO_PDF:list){
     		Map<String,String> map = null;
     		map = BeanUtils.describe(newVoucherDTO_PDF);
     		
     		String voucher_no=newVoucherDTO_PDF.getVoucher_no();
     		String quhua_code=newVoucherDTO_PDF.getAdmdivcode();
     		String vt_code=newVoucherDTO_PDF.getVt_code();
     	    String styear=newVoucherDTO_PDF.getStyear();
     	    
     		map.put("download", "<a href=javascript:download('"+voucher_no+"','"+quhua_code+"','"+vt_code+"','"+styear+"')>下凭证载</a>");
      		listMap.add(map);
     	}

		Map<String,List<Map<String,String>>> resultMap = new HashMap<String,List<Map<String,String>>>();
		resultMap.put("data", listMap);
		
		JSONObject jo = JSONObject.fromObject(resultMap);
		jo.put("recordCount", _page.getTotalRows());
		this.actionWrite(jo.toString());
		return null;


写回到前台的数据JO:

{"data":[
    {"admdivcode":"110000","voucher_no":"TCNO1818745456","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('TCNO1818745456','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"TCNO174881120","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('TCNO174881120','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"TCNO1981697224","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('TCNO1981697224','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"TCNO2054239848","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('TCNO2054239848','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"yk00002","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('yk00002','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"TCNO323306459","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('TCNO323306459','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"LL00001","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('LL00001','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"yk00001","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('yk00001','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"TCNO218019412","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('TCNO218019412','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"TCN323306459","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('TCN323306459','110000','1101','2014')>下凭证载<\/a>"},
    {"admdivcode":"110000","voucher_no":"TCN11O323306459","vt_code":"1101","styear":"2014","download":"<a href=javascript:download('TCN11O323306459','110000','1101','2014')>下凭证载<\/a>"}
    ],
   "recordCount":11}

最重要的是 格式,以什么样的格式即最终要以JSON的格式传到后台去。这个格式是JSON的规范,所以不难理解为什么为什么在后台Java代码中费劲心思不断将数据转换成Map,

Map<String,String> map = null;map = BeanUtils.describe(newVoucherDTO_PDF);

Listt数组,再将List转换成Map数组,

List<Map<String,String>> listMap=null;
listMap = new ArrayList<Map<String,String>>();
listMap.add(map);


再new一个map放入List,y而是为了和Ext或者前台的根对应:

Map<String,List<Map<String,String>>> resultMap = new HashMap<String,List<Map<String,String>>>();
放入数据:
resultMap.put("data", listMap);

最后将map装换成JSON数据,通过JSONObject类

将map转换为JSON数据:
JSONObject jo = JSONObject.fromObject(resultMap);




对于前台的数据接收:前台其实是自动将JSON解析出来的,不需要程序员的参与,JSON本身就是一个Map,一个标准。【以下是公司封装的,只供参考】


一个关于得到GridPanel内容的函数:

function getStore(urlpath, fileds) {
	var fields = getFiled(fileds);
	var store = new Ext.data.JsonStore( {
		proxy: {        
			type: 'ajax',       
			url : urlpath,   
			timeout: 90000, 
			reader: {           
				<strong>type: 'json',            
				root: 'data',
				totalProperty : 'recordCount'</strong>
			}
		},
		pageSize: itemsPerPage,
		//remoteSort : true,
		fields : fields,
		autoLoad : false
	});
	return store;
}

黑体标记的就是传递过来的数据。

再看看var fields = getFiled(fileds);此时功能只是要显示部分列选项数据。

function getFiled(filed) {
	var fields = filed.split(",");
	var filed = "[";
	for ( var i = 0; i < fields.length; i++) {
		filed = filed + "{name: '" + fields[i] + "'},";
	}
	filed = filed.substring(0, filed.length - 1);
	filed = filed + "]";
	return strToJson(filed);
}

                                         

可以看到这个fields的格式其实和data根数据的格式是相对应的。




总结:不管怎样后台传递JSON数据的格式是固定的,这点要清楚,这是一个规范。


JSON基础:http://baike.baidu.com/view/136475.htm#【百度百科】




以上是自己对后台拼JSON到前台的领悟,非常不清楚,只供参考。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ItJavawfc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值