对于高用户交互性的企业应用来说,目前采取Java EE+Flex的架构无疑是绝佳的选择。而沟通服务端java数据和客户端Flex数据的关键,目前主要采用BlazeDS(LCDS的子集,少了部分高级应用)这个中间件技术。
明显两端数据在底层表示上是不一致的,BlazeDS对其进行了映射,但值得注意的是它们之间对应的关系不是对称的,在开发中需要注意:
Java->Actionscript
Java | ActionScript |
java.lang.String | string |
java.lang.Boolean, boolean | Boolean |
java.lang.Integar | int |
java.lang.Short | int |
java.lang.Byte | int |
java.lang.Byte[] | Flash.utils.ByteArray |
java.lang.Double | Number |
java.lang.Float | Number |
java.lang.Long | Number |
java.lang.Character | String |
java.lang.Character[] | String |
java.util.Calendar | Date |
java.util.Date | Date |
java.util.Collection | mx.collection.ArrayCollection |
java.lang.Object[] | Array |
java.util.Map | Array (sparse) |
java.util.Dictionary | Object (untyped) |
org.w3c.dom.Document | XML object |
ActionScript->Java
ActionScript | Java |
Array (dense) | java.util.List |
Array (sparse) | java.util.Map |
flash.utils.ByteArray | byte[] |
flash.utils.IExternalizable | java.io.Externalizable |
Date | java.util.Date |
int/uint | java.lang.Integer |
null | null |
Number | java.lang.Double |
String | java.lang.String |
XML | org.w3c.dom.Document |
XMLDocument | org.w3c.dom.Document |
注:JAVA里的LIST、ARRAYLIST对应到FLEX里可以用常用ArrayCollection来接收。 比如:通过调用
java端某方法返回一个ARRAYLIST,该ARRAYLIST里放的一般是用户自定义类型。FLEX端接收到的
肯定是个OBJECT,这个时候可以强制转换成ArrayCollection:event.result as ArrayCollection。然后
通过遍历该ArrayCollection,来取得存每条数据的OBJECT。 当as这边定义了与自定义类型定义的类
型对应的类时,可以强制转换成该类型。