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推荐



posted @ 2008-10-15 21:36  Chris Wang  阅读(658)  评论(1编辑  收藏  举报