<mx:RemoteObject id="RO" source="org.sjtu.se.Applex" fault="alert(fault.faultString, 'Error');">
<mx:method name="listPerson"/>
</mx:RemoteObject>
<mx:Model id="myModel">
{RO.listPerson.result}
</mx:Model>
<mx:DataGrid id="DG" with="100%" height="100%" dataProvider="{myModel}">
<mx:columns>
<mx:array>
<mx:DataGridColumn headerText="Name" columnName="name"/>
<mx:DataGridColumn headerText="Age" columnName="age"/>
</mx:array
</mx:columns>
</mx:DataGrid>
public class Person
{
String name;
int age;
//getters and setters here.
//getters and setters are must for Flex to access the data in object of
//this class
}
public List listPerson()
{
List list = new ArrayList();
Person p1 = new Person("seafront", 22);
Person p2 = new Person("frontsea", 20);
list.add(p1); list.add(p2);
return list;
}
是
flex
与
java
交互主要还是要关心这两者之间的数据交互类型的转换。
ActionScript
与
java
的类型互换不是对称的,见下面的表:
ActionScript to Java
|
ActionScript Type
|
Java Type
|
null
|
null
|
Number
|
java.lang.Number
|
Boolean
|
java.lang.Number, booean, java.lang.String
|
String
|
java.lang.String, java.lang.Boolean boolean, java.lang.Character, char, java.lang.Number
|
Date XML Object
|
java.util.Date org.w3c.dom.Document
|
Java to ActionScript
|
Java Type
|
ActionScript Type
|
null
|
null
|
java.lang.Number(class or primitive)
|
Number
|
java.lang.Boolean, boolean
|
Boolean
|
java.lang.String, java.lang.Character char[]
|
String
|
java.util.Collection, java.lang.reflect.Array
|
Array
|
java.util.Map, java.util.Dictionary
|
Object
|
org.w3c.dom.Document
|
XML Object
|
Other classes
|
Object(typed)
|
由上面两表可以看到,一般的数据类型都可以很好的装换,但是对于用户自定义的类型的话,那么要不就是在
ActionScritp
中定义相关的数据类型,进行类型注册,但是这样两者就太紧耦合了,觉得不是很好。另外的话可以看到,
java
可以返回
Collection
类型的集合类给
ActionScript
,而
AS
使用是一数组来处理,就像前面例子里的一样,虽然
Person
是自定义类,但是里面的成员都是基本
AS
可自动转换的类型的,而把
Person
对象放在
List
里返回,然后
AS
通过数组
的
[]
操作符来访问,直接操作
name
和
age
成员变量。
所以如果用
flex
作表现曾的话,那么对于
model
中的类,就可能要考虑这一点,有时候需要专门为
flex
编写与其兼容的
model
类。可见两种方法都需要额外的工作,根据不同情况来选择就好。
还有如果从
Flex
中提交一个
Array
到
Java
方法中,
java
方法以
Collection
来接受,如果
Array
不是常规数组,就是说数组元素不是用
index
来访问,那么里面每个元素是一个
Map(HashMap), key
是这个数组访问变量,比要把上面
datagrid
的
dataProvider
提交大
java
方法中,那么
Map
的
key
就是
name
和
age
,使用
Map.get()
从而取出里面的数据。
posted on 2007-03-02 12:38
☜♥☞MengChuChen 阅读(5189)
评论(1) 编辑 收藏 所属分类:
flex2.0