`
ioryioryzhan
  • 浏览: 154644 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用lcds时actionscript与java数据类型转换

阅读更多

    使用lcds时,由于直接可以和java打交道,可以不用通过xml或者其他方式通信,用起来真的很方便,听说效率非常好,虽然不知道怎么来测试这效率,但还是很乐意去用它。数据从前台传到后台,后台处理后又将新数据传到前台,有人说web编程便是处理字符串,并不是没有道理的。
    最先遇到的问题便是actionscript与java数据类型转换,比如在actionScript中定义一个int型的变量,传到后台时会自动对应为一个java的int型变量。但数据类型那么多,还真要好好列一列,当然不是自己去一个一个试,官方的文档里早就写好了。一个是actionScript 到java,一个是java到actionScipt,两张表:

从actionScript到java:

**************************************************************************

ActionScript type (AMF 3)

Deserialization to Java

Supported Java type binding

Array (dense)

java.util.List

java.util.Collection, Object [ ] (native array)

If the type is an interface, it is mapped to the following interface implementations

  • List becomes ArrayList
  • SortedSet becomes TreeSet
  • Set becomes HashSet
  • Collection becomes ArrayList

A new instance of a custom Collection implementation is bound to that type.

Array (sparse)

java.util.Map

java.util.Map

Boolean

String of "true" or "false"

java.lang.Boolean

Boolean, boolean, String

flash.utils.ByteArray

byte []

 

flash.utils.IExternalizable

java.io.Externalizable

 

Date

java.util.Date

(formatted for Coordinated Universal Time (UTC))

java.util.Date, java.util.Calendar, java.sql.Timestamp, java.sql.Time, java.sql.Date

int/uint

java.lang.Integer

java.lang.Double, java.lang.Long, java.lang.Float, java.lang.Integer, java.lang.Short, java.lang.Byte, java.math.BigDecimal, java.math.BigInteger, String, primitive types of double, long, float, int, short, byte

null

null

primitives

Number

java.lang.Double

java.lang.Double, java.lang.Long, java.lang.Float, java.lang.Integer, java.lang.Short, java.lang.Byte, java.math.BigDecimal, java.math.BigInteger, String, 0 (zero) if null is sent, primitive types of double, long, float, int, short, byte

Object (generic)

java.util.Map

If a Map interface is specified, creates a new java.util.HashMap for java.util.Map and a new java.util.TreeMap for java.util.SortedMap.

String

java.lang.String

java.lang.String, java.lang.Boolean, java.lang.Number, java.math.BigInteger, java.math.BigDecimal, char[], any primitive number type

typed Object

typed Object

when you use [RemoteClass] metadata that specifies remote classname. Bean type must have a public no args constructor.

typed Object

undefined

null

null for Object, default values for primitives

XML

org.w3c.dom.Document

org.w3c.dom.Document

XMLDocument

(legacy XML type)

org.w3c.dom.Document

org.w3c.dom.Document

 

You can enable legacy XML support for the XMLDocument type on any channel defined in the services-config.xml file. This setting is only important for sending data from the server back to the client; it controls how org.w3c.dom.Document instances are sent to ActionScript. For more information, see

**************************************************************************

从java到actionScript:

**************************************************************************

Java type ActionScript type (AMF 3)
java.lang.String String
java.lang.Boolean, boolean Boolean
java.lang.Integer int
If i < 0xF0000000 || i > 0x0FFFFFFF, the value is promoted to Number.
java.lang.Short int
If i < 0xF0000000 || i > 0x0FFFFFFF, the value is promoted to Number.
java.lang.Byte int
If i < 0xF0000000 || i > 0x0FFFFFFF, the value is promoted to Number.
java.lang.Byte[] flash.utils.ByteArray
java.lang.Double Number
java.lang.Long Number
java.lang.Float Number
java.lang.Character String
java.lang.Character[] String
java.util.Calendar Date
Datesare sent in the Coordinated Universal Time (UTC) time zone. Clients andservers must adjust time accordingly for time zones.
java.util.Date Date
Dates are sent in the UTC time zone. Clients and servers must adjust time accordingly for time zones.
java.lang.Object (other than previously listed types) Typed Object
Objects are serialized using Java Bean introspection rules. Fields that are static, transient, or nonpublic are excluded.
java.util.Collection mx.collection.ArrayCollection
java.lang.Object[] Array
java.util.Map Object (untyped)
InFlex 1.5, java.util.Map was sent as an associative or ECMA Array. Thisis no longer a recommended practice. You can enable legacy Map supportto associative Arrays, but Adobe recommends against doing this. Formore information, see Providing legacy AMF serialization on a channel
java.util.Dictionary Object (untyped)
org.w3c.dom.Document XML object
Youcan enable legacy XML support for the XMLDocument type on any channeldefined in the services-config.xml file. For more information, seeProviding legacy AMF serialization on a channel.
null null
Other classes that extend java.lang.Object Object (typed)
Objects are serialized using Java Bean introspection rules. Fields that are static, transient, or nonpublic are excluded.

 

 

**************************************************************************

    这里面我用得最多的还是一些基本数据类型如:int ,Number,String等,其次便是ArrayCollection,上面的表里居然没有,ft,它对应的是java的list。当要传送大量数据时,当然不能一个数据一个数据地传,在as这边定义一个类A,同样在java方也定义一个类B,里面的成员变量一样。然后将类A与类B对应起来,在转换时类A便会转换为类B,当然反过来也可以。

    要做到这样的一个类的对应很简单。

    只要求在as方类定义前面加上一条代码[RemoteClass(alias="/*classname*/")]即可。如:

As方:

package{
   [Bindable]
   [RemoteClass(alias="com.zhan.PersonInfo")]
   public class PersonInfo{
       public var name:String;
       public var age:int;
       public var gender:Boolean;
   }
}

 Java方 (get set 就不写出来了 ):

package com.zhan{
   public class PersonInfo{
       public String name;
       public int age;
       public boolean gender;
   }
}

 这样便将两个类对应了起来,其中有几个点要特别注意:

 

1.两个类对应成员命名要求一致,就是一模一样,这样转换时才知道将哪个成员转换为哪个成员

2.命名首字母要小写, 这个其实是一编程规范,有时候会忘了。

  (这个规则上可是吃了亏的,怎么也不知道问题出在哪,查了半天,无意间将命名改为小写,居然就可以了,看来平时编程时还是要规范点)

3.java转换为as时,要求as类提拱默认构造函数(即不带参数) ,从java转换为as时,其实是构造一个as对象去接收,如果这个as类要求有带参数的构造函数,估计会把lcds搞晕,当然吃亏的还是自已

 

分享到:
评论

相关推荐

    Flex类图和与Java交互时类型转换对照

    在Flex和Java之间进行交互时,数据类型转换是至关重要的,因为这两个平台有着不同的数据模型。Flex是一种基于ActionScript的富互联网应用程序(RIA)开发框架,而Java则是一种广泛使用的服务器端编程语言。理解Flex...

    flex利用LCDS与java通信

    数据传输过程中,AMF会自动进行类型转换,使得Java对象和ActionScript对象能够互换。这种透明性减少了编码工作量,提高了开发效率。 为了测试这个工程,可以创建一个简单的Flex界面,包括按钮和数据网格,通过点击...

    Flex LCDS的例子

    LCDS自动处理数据类型转换和网络通信。 5. **LCDS服务配置**:在Java环境中,需要配置LCDS服务,包括在服务器端部署LCDS服务组件,设置数据源和应用程序服务,以及在Flex客户端添加相应的服务引用。 6. **数据绑定...

    BlazeDS开发向导

    2. **ActionScript与Java数据类型转换** 在Flex和Java之间进行数据交换时,数据类型转换是一个关键步骤。ActionScript和Java有着不同的数据类型体系,例如,ActionScript中的Date对象对应Java中的java.util.Date,...

    flex与java通信的完整demo

    Flex与Java通信是Web开发中的一个重要技术组合,它允许用户在浏览器端利用Flash的富互联网应用(RIA)特性,通过ActionScript与服务器端的Java应用程序进行数据交互。本压缩包包含了一个完整的Flex与Java通信的示例...

    精通Flex3.0 CHM电子书

    精通Flex 3.0――14.1.2 ActionScript与Java数据类型的转换 精通Flex 3.0――14.1.3 LCDS的内容结构 精通Flex 3.0――14.2 一个最基本的LCDS应用 精通Flex 3.0――14.3 通过Remoting访问服务端的应用 精通Flex 3.0―...

    flex4与java交互

    1. 数据转换:由于Flex和Java的数据类型可能不同,因此在交互过程中需要进行数据转换。例如,Java的Date对象在AMF中会被转换为Flex的Date对象。 2. 安全性:在前后端交互中,必须考虑安全性,包括数据加密、身份...

    Flex Java通信实例

    4. **ActionScript与Java数据类型映射** AMF允许Flex中的ActionScript对象和Java对象之间的无缝转换。例如,ActionScript对象可以映射到Java的POJO(Plain Old Java Object),使得数据交换更加便捷。 5. **事件...

    Flex + LCDS + J2EE 传值交互实例

    本实例将深入探讨如何在这些技术之间有效地传递不同数据类型,包括字符串(String)、对象(Object)和数组(Array)。首先,让我们逐一了解这三个组件: 1. Flex:Flex是一种基于ActionScript和MXML的开源框架,...

    Flex与java通过BlazeDS实现通信

    BlazeDS是Adobe提供的一款开源中间件,它允许Flex客户端与Java后端进行实时双向通信,支持AMF(Action Message Format)数据交换,提供了高效的数据传输和Remoting服务。 1. **BlazeDS简介** BlazeDS是Flex和Java...

    flex使用BlazeDS远程调用java例子.

    BlazeDS会在后台处理网络通信和类型转换。 5. **处理结果**:Java服务执行完毕后,结果会通过回调方法返回给Flex客户端,供进一步处理。 总结来说,"flex使用BlazeDS远程调用java例子"涉及到的技术主要包括Flex...

    java对象在前台flex的datagrid中显示

    2. **Flex与Java通信**:使用HTTP服务或者 BlazeDS / LCDS (LiveCycle Data Services) 这样的中间件来实现在Flex与Java之间的数据交换。BlazeDS允许Flex客户端与Java服务器之间进行双向通信,通过AMF协议提供高效的...

    基于Flex和Java的配网通信网管系统的拓扑设计与实现.pdf

    LCDS负责在Flex前端和Java后端之间进行数据类型转换,以便两者可以有效通信。在本系统中,为了简化Flex和Java之间的数据交互过程,统一使用字符串类型作为数据传输的媒介,这使得交互过程简单易行。 系统功能上,...

    Flex如何连接数据库,通信的详细的教程

    开发过程中可能会遇到如网络连接错误、数据类型不匹配等问题。利用Flex的调试工具和日志记录,可以定位并解决问题。对于AMF通信问题,检查服务器端和客户端的配置是否一致,数据序列化是否正确。 8. **异常处理** ...

    FLEX培训总结

    此外,还有其他通信方式,如OpenAMF,它们实现ActionScript与Java数据格式之间的转换,使用AMF协议进行序列化和反序列化操作。 ActionScript(AS3)是Flex的基础脚本语言,与Java和JavaScript有诸多相似之处。AS3中...

    java 中Flex开发RemoteOject 配置详解

    Adobe BlazeDS或LCDS是常用的AMF中间件,它们提供了将AMF数据转换为Java对象和服务的方法。 3. **异常处理和结果处理**:在调用远程方法时,我们需要添加事件监听器来处理可能的错误(FaultEvent.FAULT)和返回的...

    Flex Service

    Flex自动处理XML到ActionScript对象的转换,简化了数据的处理流程。 2. Flex与RESTful服务的整合: REST是一种轻量级的架构风格,通常与HTTP协议结合使用,以JSON或XML格式传输数据。在Flex中,可以使用URLLoader...

    flex与后台servlet建立连接

    BlazeDS是开源项目,可以将ActionScript数据类型透明地映射到Java对象。当Flex客户端发送请求到服务器时,BlazeDS会将AMF消息转换为Java对象,然后传递给Servlet处理。 2. **配置Servlet**:在Java后台,你需要配置...

    blazeds-bin-4.0.0.15974.zip

    5. **Flex到Java的类型映射**:BlazeDS自动处理ActionScript和Java对象之间的类型转换,使得跨语言开发更加便捷。 6. **事件驱动模型**:BlazeDS支持事件驱动编程,使得客户端可以响应服务器端的事件,提高了交互性...

Global site tag (gtag.js) - Google Analytics