<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 閱讀(5200)
評論(1) 編輯 收藏 所屬分類:
flex2.0