ResultEvent.result中如果返回的不是java的基本类型则flex会把它转化为Object类型(Object强制转化为As对象后,as对象为null)。如果想让result中的结果自动转化为相应的AS3对象,就需要使用[RemoteClass(alias="完整的java类路径")].
具体的步骤如下:
1 定义java bean
public class SecurityAction {
public String componentId;//组件ID
public boolean isShow;// 有权限为true 否则为false
/**
* 没有权限时的处理方式
* 1 remove:通过调用comp.parent.removeChild()完全删除组件
* 2 visible:将 compl.visible 属性设置为 false。
* 3 enable:将 comp.enable 属性设置为 false。
*/
public String showType;
public String getComponentId() {
return componentId;
}
public void setComponentId(String componentId) {
this.componentId = componentId;
}
public boolean isShow() {
return isShow;
}
public void setShow(boolean isShow) {
this.isShow = isShow;
}
public String getShowType() {
return showType;
}
public void setShowType(String showType) {
this.showType = showType;
}
}
2 定as3对象
[Bindable]
[RemoteClass(alias="com.amc.purview.model.SecurityAction")]
public class SecurityAction{
public function SecurityAction(){
}
public var componentId:String;//组件的id
public var isShow:Boolean;//有权限为true 否则为false
/**
* 没有权限时的处理方式
* 1 remove:通过调用comp.parent.removeChild()完全删除组件
* 2 visible:将 compl.visible 属性设置为 false。
* 3 enable:将 comp.enable 属性设置为 false。
*/
public var showType:String;
}
3. java端返回结果。
public ArrayCollection getActions(String userId,String pageId){
ArrayCollection ac=new ArrayCollection();
SecurityAction action=new SecurityAction();
action.setComponentId("btn2");
action.setShow(false);
action.setShowType("enable");
ac.add(action);
return ac;
}
4 flex端处理返回结果。
private function getActionSuc(result:ResultEvent):void{
var actions:ArrayCollection=result.result as ArrayCollection;
if(actions!=null){
Security.load(actions,comp);
}
}
注意:1 as3对象和java对象的属性必须一致,public和private都可以的。
2 按照规范,暴露给Flex调用的不能包含以下保留的方法名:
disconnect()
getOperation()
hasOwnProperty()
initialized()
isPrototypeOf()
logout()
propertyIsEnumerable()
setCredentials()
setPropertyIsEnumerable()
setRemoteCredentials()
toString()
valueOf()
如果不小心用到了以上的方法,可以用以下方法解决。
public var myRemoteObject:RemoteObject = new RemoteObject();
myRemoteObject.destination = "ro-catalog";
public var op:Operation = myRemoteObject.getOperation("hasOwnProperty");
注意:如果flex中有多个Module,就有可能导致RemoteClass信息丢失,如何解决RemoteClass信息丢失,请参考我的另一篇博客解决RemoteClass alias信息丢失。
分享到:
相关推荐
ORM框架可以将Java对象直接映射到数据库表,简化数据库操作。 9. 安全性与优化: 虽然这个实例主要是为了教学,但实际应用中还需要考虑安全性(如输入验证、授权、认证)和性能优化(如分页、缓存策略、异步请求)...
BlazDS提供了一种解决方案,即通过类映射机制,使得Flex可以调用Java的方法,如同调用本地对象一样。 当在Java项目中有一个`save(User user)`方法,接收一个User类型的JavaBean作为参数时,要在Flex端调用此方法,...
5. **JOTO对象映射**:了解如何在Flex客户端声明Java对象,以及在服务器端如何处理这些对象。这涉及到数据类型的映射和对象的序列化。 6. **事件驱动编程**:在Flex中,事件驱动模型是主要的编程模式。学习如何监听...
AMF是一种高效的序列化格式,它能将ActionScript对象直接转换为Java对象,反之亦然,大大提高了数据传输效率。使用 BlazeDS 或 GraniteDS 等中间件,可以轻松建立Flex前端与Java后端之间的通信桥梁。 四、学习资源...
- RemoteObject组件:提供与服务器进行AMF通信的便捷方式,可以自动映射Java对象到Flex对象。 - Event-driven架构:Flex和Java之间的通信通常是异步的,需要理解事件处理机制以处理服务器响应。 - 安全性:考虑数据...
此外,了解ActionScript和Java之间的数据类型映射、AMF的工作原理也是重要的学习内容。最后,实际操作中,还要熟悉Eclipse或其他IDE的使用,以及理解Web应用程序的基本架构。这些知识对于深入理解Web开发和提升技能...
AMF允许Flex中的ActionScript对象和Java对象之间的无缝转换。例如,ActionScript对象可以映射到Java的POJO(Plain Old Java Object),使得数据交换更加便捷。 5. **事件驱动的通信模型** Flex与Java之间的通信...
4. **BlazeDS配置**:在Java应用服务器(如Tomcat)上部署BlazeDS,配置相应的服务映射,使得Flex可以通过AMF与Java服务进行通信。 5. **创建AMF通道**:在Flex项目中,配置services-config.xml文件,定义与Java...
在Flex中,为了能够将前端的数据对象与后端的服务进行有效映射,通常会在Flex端定义一个实体类,并使用`Bindable`和`RemoteClass`注解来关联前后端的数据模型。 ```as [Bindable] [RemoteClass(alias=...
同时,Hibernate或其他ORM框架可以用于数据库操作,将Java对象与数据库表映射,简化数据访问。 总之,Flex+Java的整合利用了BlazeDS作为桥梁,实现了前端Flex和后端Java的无缝对接。开发者可以通过这种方式创建出...
4. **ActionScript类映射**:在Flex中,我们需要定义ActionScript类来映射Java对象。这通常在`.as`文件中完成,确保Flex客户端可以理解和操作服务器返回的对象。 5. **事件驱动编程**:Flex和Java之间的通信通常是...
它包含了一个AMF通道,使得Java对象可以直接序列化到AMF消息,然后通过HTTP或RTMP(Real-Time Messaging Protocol)发送给Flex应用。 3. **LCDS(LiveCycle Data Services)**:是Adobe提供的一个更全面的企业级...
在本文中,我们将深入探讨如何实现Flex与Java Servlet结合进行文件上传。首先,我们需要了解Flex是一种基于Adobe AIR的开源框架,用于构建富互联网应用程序(RIA),而Java Servlet是Java平台上的一个标准,用于处理...
5. **数据转换**:Blazeds自动处理AMF到Java对象的转换,使得Flex中的ActionScript对象可以无缝地映射到Java对象。例如,你可以直接传递一个ActionScript对象到Java方法,而无需手动序列化或反序列化。 6. **异常...
3. **Hibernate**或MyBatis:作为持久层框架,处理数据库操作,简化了SQL查询和对象关系映射。 4. **RESTful API设计**:Java后端通过提供RESTful接口,与Flex前端进行通信。这种方式基于HTTP协议,易于理解和实现...
6. **Hibernate 3.0**:持久化框架,负责数据库操作,简化了Java对象与SQL数据库之间的映射。 开发和调试环境选用: - MyEclipse 6.6作为Java开发工具,集成了对Flex的支持。 - Flex Builder 3.0.2专用于Flex应用...
在Java整合Flex项目中,Hibernate用于处理数据库交互,通过对象关系映射(ORM)将Java对象与数据库表进行绑定。这允许Flex客户端通过Java服务调用来操作数据,而无需直接操作SQL。配置Hibernate涉及创建实体类、映射...
AMF是一种二进制格式,它能够将Java对象序列化为可以在Flash Player中解析的格式,从而实现前后端之间的快速数据传输。 1. **Spring框架**:Spring提供了服务代理,如Spring BlazeDS Integration,可以作为Java和...
你可以使用ActionScript类来映射Java对象,这样在调用Java服务时可以直接操作这些类。 3. **Java后端**:在Java应用服务器上,定义相应的服务接口和实现。这些服务可以处理来自Flex的请求,处理业务逻辑,并返回...
AMF能直接映射到Flex和Java对象,简化了数据序列化和反序列化的过程。 4. **Java后端**:在Java端,通常使用Spring、Hibernate等框架处理业务逻辑和数据持久化。Spring提供依赖注入和面向切面编程,便于管理对象...