java arraycollection_flex,java数据交互,类映射,以arraycollection接受

需要在WebContent→WEB-INF→flex目录下找到一个叫remoting-config.xml的文件,文件当前的内容如下:

encoding="UTF-8"?>

class="flex.messaging.services.RemotingService">

id="java-object"

class="flex.messaging.services.remoting.adapters.JavaAdapter"

default="true"/>

这是默认的设置。其中的段表明了这是一个远程调用服务,段定义了一个“适配器”,读者可以将其理解为与对象或服务直接交互的服务器端代码,这可能比较难理解,其实读者可以理解为:Java写的东西,Flex是看不懂的,有了这个适配器,可以在Java和Flex中建立一种转换机制,能够使Flex和Java顺利通信,就像USB鼠标可以用一个串口适配器接到串口上当成普通鼠标使用一样。在我们稍后定义的“目标”中,会引用这个适配器。段定义了默认的“频道”,频道是指一种传输的协议,Flex客户端(Flash

Player)需要某种“协议”才能与数据服务进行通信。在Flex中,有3种基本的“频道”:HTTP、AMF和RTMP。形象点说,你调到某个频道,就能收看那个频道的电视(能接收其信号),这是同一个道理。

现在在段后面加上我们的“目标”定义:

flex.userinfosys.db.user.UserService

这里定义了一个元素,可以理解为“目标”,其中的子元素中定义了我们要引用的UserService类。目标按Flex官方的技术资料解释为“endpoint”(端点),我们的调用到达UserService之前实际上是在网络上传输的,需要编码和解码,所以这个端点可以理解成负责编码和解码的一个中间服务。

现在,我们修改UserInfoSys.mxml,调用UserService来获取我们的用户数据:

encoding="utf-8"?>

xmlns:mx="http://www.adobe.com/2006/mxml"

creationComplete="srv.getUsers()">

destination="user"/>

dataProvider="{srv.getUsers.lastResult}"

width="100%" height="100%"/>

click="srv.getUsers()"/>

编译项目并部署,启动服务器。打开浏览器,输入以下地址:

调用UserService返回所有用户信息

首先,我们要建立一个ActionScript类User,用于存放客户端的用户信息,相当于一个Value

Object(涉及模式中的数据传输对象)。

单击Finish按钮,这样Eclipse会为我们建立一个AcitonScript类的框架,自动生成如下代码(User.as):

package

{

public

class User

{

public function User()

{

}

}

}

我们在其中添加用户的相关属性字段,并加上元数据标签[Managed]和[RemoteClass]如下(User.as):

package

{

[Managed]

[RemoteClass(alias="flex.userinfosys.db.user.UserProfile")]

public class User

{

public function User()

{

}

public var userId:int;

public var name:String;

public var title:String;

public var image:String;

public var imagebref:String;

public var description:String;

}

}

ActionScript定义的对象有两种类型,一种是其所有属性都是原始类型,如int、String等;还有一种是某些属性是对象类型,这种对象称为“层次类型”的对象。

我们使用UserService对象来管理User对象的持久化,如果User对象有对象类型的属性的话,需要相应的Java对象来管理相应属性的持久化。加上Managed元数据标签表明,如果有对象类型的属性,那么这些属性拥有自己的“目标”定义,这些“目标”负责管理这些属性的状态。我们前面已经定义了一个目标,它与UserService关联,如果User对象有对象类型属性如Address,那么还会为Address单独定义目标,负责Address的增删改查操作。

RemoteClass元数据标签建立了一个User类(ActionScript类)到我们先前建立的UserProfile类(Java类)之间的一个映射。

当我们将数据封装在User类中并发送到服务器端,调用Java类上的方法时,先前定义的“目标”和“适配器”会自动为我们完成这种转化,将User类对象转化为Java的UserProfile对象。

在此请注意两点:一是这里的字段名一定要和Java对应类中的完全一致,例如UserProfile中有userId属性,那么这里的userId就不能写成user_id或其他形式,否则在更新数据的时候会出错;二是UserProfile一定要有默认的构造函数,否则不能实例化UserProfile类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值