加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

案例学习BlazeDS+Spring之五InSync03强类型

发布时间:2020-12-15 04:38:59 所属栏目:百科 来源:网络整理
导读:InSync03:强类型 一、运行DEMO: 1、运行程序:http://localhost:8400/spring-flex-testdrive/insync03/index.html; 2、单击Search按钮,从数据库获取所有的联系人。 3、在Search文本框输入几个字符,单击“Search”按钮,按名字来查找联系人。 4、在DataGr

InSync03:强类型

一、运行DEMO:
1、运行程序:http://localhost:8400/spring-flex-testdrive/insync03/index.html;
2、单击Search按钮,从数据库获取所有的联系人。
3、在Search文本框输入几个字符,单击“Search”按钮,按名字来查找联系人。

4、在DataGrid中选择一个联系人。
5、在联系人窗体中编辑该联系人,单击"Save"来保存修改。

二、理解代码:
1、insync03.mxml:

选择DataGrid里的联系人后,将会更新ContactForm的contact属性,ContactForm的控件值会自动更新。
<local:ContactForm contact="{dg.selectedItem as Contact}" width="70%" height="100%"/>

2、ContactForm.mxml:

该窗体上的控件用于显示contact的信息,contact成员变量用于控件绑定。

[Bindable] public var contact:Contact;
保存和删除的按钮,分别调用RemoteObject的方法,ro.update(contact)和ro.remove(contact);

也捕获了远程调用后触发的事件。

<mx:RemoteObject id="ro" destination="contactService" fault="faultHandler(event)" endpoint="http://localhost:8400/spring-flex-testdrive/messagebroker/amf">
??????????? <mx:method name="update" result="update_resultHandler(event)"/>
??????????? <mx:method name="remove" result="remove_resultHandler(event)"/>
</mx:RemoteObject>

3、Contact.as?
该类是FLASH里的AS类,Contact类只是定义了一些公共的成员变量。重要的是远程类的标注。这个类用于与远程的JAVA类进行映射。
[Bindable]
[RemoteClass(alias="org.springframework.flex.samples.contact.Contact")]

4、Contact.java:

该类位于服务端,Contact要实现Serializable,用于与FLASH中的AS类进行序列化/反序列化。而实现序列化,定义serialVersionUID成员变量即可。
static final long serialVersionUID = 103844514947365244L;

还有各私有属性的get/set公开方法。

5、更新/删除操作

在前台的ContactForm里,ro.update(contact)或ro.remove(contact)后,FLASH里的contact实例会被序列化,然后传送到服务端,进行反序列化后,变成可供JAVA应用操作的JAVA实例。

contactDAO bean的更新和删除方法是:
??? public boolean update(Contact contact) {
??????? int count = this.template.update(
??????????? "UPDATE contact SET first_name=?,last_name=?,address=?,city=?,state=?,zip=?,phone=?,email=? WHERE id=?",contact.getFirstName(),
??????????? contact.getLastName(),contact.getAddress(),contact.getCity(),contact.getState(),contact.getZip(),contact.getPhone(),
??????????? contact.getEmail(),contact.getId());
??????? return count == 1;
??? }

??? public boolean remove(Contact contact) {
??????? int count = this.template.update("DELETE FROM contact WHERE id=?",contact.getId());
??????? return count == 1;
??? }

?

三、小结:

在本DEMO中,使用强类型的contact对象。Contact是AS类,它代表org.springframework.flex.samples.contact.Contact Java类。这个映射过程要求AS中定义类时使用标注来定义其对应的远程类,而远程类要实现序列化的接口。

如Contact.as中的[RemoteClass(alias="org.springframework.flex.spring.samples.contact.Contact")] 标注用来指出Contact AS实例发送到服务器被反序列为org.springframework.flex.spring.samples.contact.Contact服务端的Java实例,同样的,从服务器上接收的org.springframework.flex.spring.samples.contact.Contact Java实例将被反序列为Contact AS实例。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读