Java与Flash的结合时候数据交换的一些学习总结
作者: wangding263 链接:http://wangding263.javaeye.com/blog/253354 发表时间: 2008年10月15日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
1.服务器端如果用Java的话,推荐用OpenAmf,文档较多,使用也挺简单.服务器端我采用了Hibernate Annotation+Spring+OpenAmf
2.对于服务器端向客户端发送数据的时候,由于我用了OpenAmf,没有采用Flash中自带的WebServiceConnector.
我在Flash 中用脚本这样写:
var flashtestService:Service = new Service("http://localhost:8080/ProjectFramework/gateway",null, "testBean", null, null); //flashtestService其实就是服务器端testBean的一个客户端代理类对象, //getJson对应服务器端中testBean中getJson方法,返回Json数据 var pc:PendingCall = flashtestService.getJson(); //下面这一句的后两个参数,就是我们要调用的getMessage方法,分别加上_Result和_Fault pc.responder = new RelayResponder(this, "getJson_Result", "getJson_Fault");
服务器端返回Json数据后,可以自己绑定到Flash的DataGrid的组件中,非常方便.
下面是一个简单的Json数据绑定DataGrid的例子,注意似乎flash 8中的ActionScript脚本对[{"id","fsdf"}] 这样的json数据不接受,总是报**错误** 场景=场景 1, 图层=图层 1, 帧=1:第 8 行: 需要标识符
而恰恰我在服务器端,用JSON-LIB对List集合转化出来的数据,左边和右边都是加引号的,所以DataGrid不认,我郁闷.本来想修改一下JSON-LIB的源码,将生成出的数据中如[{"id","fsdf"}]中id两边的引号去掉的,但是下了JSON-LIB的源码看了半天也不知道如何下手.所以不得不自己麻烦的构造JSON数据.
哪位高手如果能提供一下 修改版本JSON-LIB,能将左边的引号去掉,小弟先谢了.
下面提供一个简单的JSON数组绑定DataGrid的代码:
import mx.controls.gridclasses.DataGridColumn; //创建 recData,它在对象数组中包含客户信息 var recData:Array = [{id:0, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true}, {id:1, firstName:"Susan", lastName:"Meth", age:55, usCitizen:true}, {id:2, firstName:"Pablo", lastName:"Picasso", age:108, usCitizen:false}, {id:3, firstName:"DingDing", lastName:"Jones", age:27, usCitizen:true}, {id:4, firstName:"wcr", lastName:"Jones", age:27, usCitizen:true}, {id:5, firstName:"wyz", lastName:"Jones", age:27, usCitizen:true}, {id:6, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true}, {id:7, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true}, {id:8, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true}, {id:9, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true}, {id:10, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true}, {id:11, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true}, {id:12, firstName:"Frank", lastName:"Jones", age:27, usCitizen:true}]; //对datagrid设置 指明要显示的列 var col:DataGridColumn = new DataGridColumn("id"); datagrid.addColumn(col); col = new DataGridColumn("firstName"); datagrid.addColumn(col); col = new DataGridColumn("lastName"); datagrid.addColumn(col); col = new DataGridColumn("age"); datagrid.addColumn(col); col = new DataGridColumn("usCitizen"); col.width=100; datagrid.addColumn(col); //设置数据源 datagrid.dataProvider =recData; datagrid.autoHScrollAble = true; datagrid.visible = true; //设置列的标题 var grid_header:Array =["id","姓","名","年龄","是否美国人"]; datagrid.vScrollPolicy = "auto"; for (var i = 0; i < grid_header.length; i++ ) { datagrid.getColumnAt(i).headerText = grid_header[i]; }
已有 0 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
作者:
Chris Wang
出处:
http://chriswang.cnblogs.com/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。