如何使用registerClassAlias来解决module中使用RemoteObject---第一次访问正常、第二次出错
- 博客分类:
- 技术杂绘
问题:今天我在Flex的module中使用RemoteObject的方式与服务端进行AMF的远程数据调用。第一次切换到module时是没有问题的,但第二次切换到module时,发现总是报错,无法完成远程调用。为此困惑极了。
我在remoting访问时,使用了一个自定义的参数类:
package VO { [RemoteClass(alias="ServiceLibrary.SystemFramework .UserInfoSearchCondition")] public class UserInfoSearchConditionVO { public function UserInfoSearchConditionVO() { } public var UserName:String; public var DepartmentId:String; } } 这个定义里使用到了:[RemoteClass(alias="ServiceLibrary.SystemFramework .UserInfoSearchCondition")]
这就是本地对象与"远程服务端类"的别名定义,这个大家都应该知道的。
远程调用时:
var condition:UserInfoSearchConditionVO=new UserInfoSearchConditionVO(); condition.UserName=txtSearchUserName.text; var resp1:Responder=new Responder(onUserSearchCountSuccess,onUserSearchCou ntFaild); nc.call("ServiceLibrary.SystemFramework.UserInfoFa cade.GetUserInfoCountByCondition",resp1,condition); 但不知道为什么,在第一次Module时加载是可以的。在第二次加载module时,此"注册"信息会丢失。
解决方法:需要明确声明此注册信息,代码如下: import flash.net.registerClassAlias; import mx.messaging.messages.RemotingMessage; import VO.UserInfoSearchConditionVO; registerClassAlias("ServiceLibrary.SystemFramework .UserInfoSearchCondition", UserInfoSearchConditionVO); 以上的代码可以放在自己的module里,或者也可以直接放在Application上,声明一次也就可以了,子Module不需要更申明了。
最后的代码我帖出来,如果你能看懂就最好了,看不懂我也没办法了:)
flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" layout="vertical" width="100%" height="100%" creationComplete="module1_creationCompleteHandler( event)" > 0) this.btnPrev.visible=true; else this.btnPrev.visible=false; if((curPage+1) * pageCount >=totalCount) this.btnNext.visible=false; else this.btnNext.visible=true; } protected function onUserSearchCountFaild(re:String):void{ Alert.show("获取数据出错!","出错了"); } protected function onUserSearchSuccess(re:ArrayCollection):void{ gridUser.dataProvider =re; } protected function onUserSearchFaild(re:String):void{ Alert.show("获取数据出错!","出错了"); } protected function btnNext_clickHandler(event:MouseEvent):void { // TODO Auto-generated method stub curPage++; BindGrid(); } protected function btnPrev_clickHandler(event:MouseEvent):void { // TODO Auto-generated method stub curPage--; BindGrid(); } protected function gridUser_itemClickHandler(eventistEvent):void { // TODO Auto-generated method stub this.currentState="edit"; } ]]--> 最后,我再主张一下我的设计的原则:
在客户端与服务端进行远程数据调用时,我不太主张采用"简单参数"模式,比如查询用户功能吧,我可以使用username,deparmentId...等等参数来进行参数调用,但这样有个扩展性问题:那就是当以后要添加"查询条件"时,不得不修改接口。这就是会导致客户端要修改N个调用地方,服务端也要进行接口修改,这就会带来很大的扩展问题。
因此,我建议可以自定义一个"Condition查询类"与"服务端"的相对应,这样接口的参数就只需要一个,而且类型不变。
以后如果要扩展"查询条件"时,只需要在"客户端"添加一个属性,并赋值就OK了。在"服务端"则也只要添加属性,并修改实现代码就OK了,不再需要修改两端的"接口"了。。
发表评论
-
什么是组件以及为什么使用组件
2012-07-03 13:42 599因为在编程当中呢 ... -
什么是组件以及为什么使用组件
2012-07-03 12:18 558因为在编程当中呢 ... -
amchart的使用!~
2012-07-02 10:15 794最近公司开发项目 ... -
Mnogosearch
2012-07-02 10:15 727一。Mnogosearch是php的搜索引擎 同datep ... -
android ubuntu9.10 源码的编译 Eclipse工程 Contacts编译 应用加载
2012-07-02 10:15 735第一部分:编译环 ... -
用Lisp写网站程序的备忘
2012-07-02 10:14 5581。 使用 hunchentoot 作为网站框架,它的功能 ... -
Flex4 使用RemoteObject BlazeDS 连接JAVA对象获取数据
2012-07-01 09:36 693使用FLEX4 和 JAVA进行通讯 并和JAVA内置的对 ... -
Flex remoteobject工作原理探讨
2012-07-01 09:36 536Flex访问远程服务都是通过AbstractService ... -
一个用ArrayCollection作为数据格式 读取远程XML绑定到DropDownList例子
2012-07-01 09:36 552这个例子没有使用 XMLListCollection 而是 ... -
一个用ArrayCollection作为数据格式 读取远程XML绑定到DropDownList例子
2012-07-01 09:36 649这个例子没有使用 XMLListCollection 而是 ... -
VS调试项目出现"访问IIS元数据库失败"的267904错误解决方法
2012-06-30 17:53 1026今天重做系统后,新装了VS2008和IIS6.将原来的AS ... -
Linux下ODBC中文乱码解决方法
2012-06-30 17:53 896最近在做一个linux下的系统,基于移植性的考虑(该系统数 ... -
phpmyadmin链接表的附加功能尚未激活的解决方法
2012-06-30 17:53 540phpmyadmin链接表的附加功能尚未激活的解决方法 ... -
u-boot在S3C2440上的移植问题及解决方法集锦(二)
2012-06-30 17:53 669一、移植环境 ... -
linux内核编译过程中出现两个错误的解决方法~!
2012-06-30 17:53 1461/*************************** ...
相关推荐
Bounds 函数 输入上下高宽返回一个矩形结构。 CollectionsEqual 函数 比较两个TCollection是不是相等。 CurrentGroup 变量 FindClass 函数 从输入字符串中返回一个从TPersistent继承的类 FindGlobalComponent ...
CreateAction 函数 创建一个指定类型的Action,显示在action list editor中。 EnumRegisteredAction 过程 枚举已经注册的Action RegisterAction 过程 注册Action UnRegisterAction 过程 反注册Action 文件: ...
5G通信行业、网络优化、通信工程建设资料。
5G通信行业、网络优化、通信工程建设资料
5G通信、网络优化与通信建设
299-教育行业信息化与数据平台建设分享.pptx
手写数字和字母数据集binaryalphadigs.mat
5G通信行业、网络优化、通信工程建设资料
PEMFC电堆输出电压模型,可计算效率、输出功率、电流、消耗功率以及等效内阻
1、 设计思路 1、 创建型设计模式 创建型设计模式主要“关注对象的创建”。 1. 单例模式 单例模式:能不用就不用 ,他的目的就是为了让一个类只创建一个实例。 用法:把对象的创建权限关闭,提供一个人公开的静态方法,实现静态方法后将实例存放于静态的字段中,方法中返回。 单例模式会长期持有一个对象不会被释放,而普通实例不用就会被释放(当然必须是GC之后才会被释放)。 单例用途;数据临时存储的地方如静态字典,数据库连接池、线程池、IOC容器实例。 1.1懒汉式 设置构造函数为私有的,避免其他外部类可以对其实例化, 创建静态类来存储实例。 在静态方法中创建实例,避免多个线程同时调用方法,我们可以加线程锁, 在方法中使用双判断语句:最外层判断是为了提高运行速率,检查如果静态字段中已经存在实例了就可以直接return;第二层判断是避免创建多个对象实例。 1.2饿汉式1 静态构造函数:由CLR保证,静态构造函数只会在启动程序时候,由CLR自行创建。并且只会创建一次,相比较于懒汉式创建的更早,并且不需要担心会
5G通信行业、网络优化、通信工程建设资料
论文目录: 第二章 需求分析与系统总体设计 - 5 - 2.1java的特点 - 5 - 2.2技术可行性 - 5 - 2.3可靠性和安全性特点 - 6 - 2.4系统总体设计 - 6 - 2.5JSP技术介绍 - 7 - 2.5.1 什么是JSP - 7 - 2.5.2 JSP技术特点 - 7 - 2.5.3 JSP开发WEB的几种方式 - 8 - 第三章 数据库的设计与实现 - 9 - 3.1数据库的需求分析 - 9 - 3.2数据库的逻辑设计 - 10 - 3.3 数据库的结构创建 - 10 - 第四章 后台系统和数据库的配置 - 13 - 4.1后台服务器配置 - 13 - 4.2后台数据库的配置 - 13 - 4.3后台全局配置文件 - 13 - 第五章 前端网络页面的开发与设计 - 14 - 5.1登录页面 - 14 - 5.2 管理员用户页面 - 15 - 5.3 注册用户页面 - 16 - 5.4主页面 - 17 - 5.5用户注册页面 - 18 - 5.6 规章制度管理页面 - 18 - 第六章 系统的安全性 - 19 - 6.1 session和cookie的安
5G通信行业、网络优化、通信工程建设资料。
99-煤矿安全生产标准化基本要求及评分方法.pdf
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
475现场通讯器用户手册
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
600A钳形电流表使用手册
5G通信、网络优化与通信建设
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。