提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|其它|编辑:郝浩|2011-08-24 15:51:36.000|阅读 392 次
概述:Flex与Java中的Object进行交互,需要准备三个内容,一个是Flex主文件,也就是我们的mxml文件,两个Java类,一个 remoting-config.xml.为了减少程序的复杂性,这里只证明Flex可以调用 Java中Object进行交互,不进行与数据库的交互.
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Flex与Java中的Object进行交互,需要准备三个内容,一个是Flex主文件,也就是我们的mxml文件,两个Java类,一个remoting-config.xml.为了减少程序的复杂性,这里只证明Flex可以调用 Java中Object进行交互,不进行与数据库的交互.
新建一个Java实体类:SpeakUser.java, 如下:
package com.cx.model;
import java.io.Serializable;
public class SpeakUser implements Serializable{
private static final long serialVersionUID = -4154296753553491429L;
private String userName;
private String userPwd;
private String userTel;
private String userMail;
public String getUserName() {
return userName;
}
public void setUserName(String userName)
{
this.userName = userName;
}
public String getUserPwd()
{
return userPwd;
}
public void setUserPwd(String userPwd)
{
this.userPwd = userPwd;
}
public String getUserTel()
{
return userTel;
}
public void setUserTel(String userTel)
{
this.userTel = userTel;
}
public String getUserMail()
{
return userMail;
}
public void setUserMail(String userMail)
{
this.userMail = userMail;
}
}
有的作者说这个实体类需要当做Java代码中方法的返回值传递给Flex中的AS代码,所以需要继承Serializable接口,否则将导致异常的发生.但是经过笔者测试,这个Serializable是可选的,即使不继承,也不会出现什么问题,可能是由于flex的版本所决定的吧.
再创建一Java对象:IntroduceOneself.java,供Flex调用, 类中 以SpeakUser作为参数.代码如下:
package com.cx.action;
import com.cx.model.*;
public class IntroduceOneself {
public String speak(SpeakUser user){
System.out.println("Hello, My Name is: " + user.getUserName());
System.out.println("My telephone is: " + user.getUserTel());
System.out.println("My Email is: " + user.getUserMail());
return "名字叫:" + user.getUserName() + ", 电话是: "
+ user.getUserTel() + ", 邮箱是: "+user.getUserMail()
+ "来访问您,请问您是否要接见?";
}
}
然后创建一个ActionScript类:SpeakUser.as,
用于接受实体类SpeakUser.java的返回值,这里的[Bindable][RemoteClass]是和java代码中的 SpeakUser.java类关联起来.这样利用类型转换将java对象转换成AS对象.代码如下:
package com.flex.model {
[Bindable]
[RemoteClass(alias="com.cx.model.SpeakUser")]
public class SpeakUser
{
public var userName:String="";
public var userPwd:String ="";
public var userTel:String ="";
public var userMail:String ="";
public function SpeakUser()
{
}
}
}
修改Flex主文件:BlazObject.mxml,在其中调用java类,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="//www.adobe.com/2006/mxml"
layout="absolute" minWidth="955" minHeight="600">
<mx:Script>
<![CDATA[
import com.flex.model.SpeakUser;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
public function remotingHelloJavaFlex():void
{
var user:SpeakUser = new SpeakUser();
user.userName = nameInputTxt.text;
user.userMail = txtUserMail.text;
user.userPwd = txtPwd.text;
user.userTel = txtTel.text;
someOneCome.speak(user);
someOneCome.addEventListener(ResultEvent.RESULT,getRoHelloRes);
}
private function getRoHelloRes(e:ResultEvent):void{
Alert.show(e.result.toString());
}
private function failed():void{
Alert.show("cuowu");
}
]]>
</mx:Script>
<mx:Button label="JAVA Object + FLEX 通信"
click="remotingHelloJavaFlex();" x="142" y="234"
fontSize="12" width="209"/>
<mx:Label text="姓名" x="121" y="55" fontSize="15"/>
<mx:TextInput id="nameInputTxt" x="170" y="55"/>
<mx:Label x="121" y="103" fontSize="15" text="密码:"/>
<mx:TextInput id = "txtPwd" x="170" y="106"/>
<mx:Label x="121" y="145" fontSize="15" text="电话:"/>
<mx:Label x="121" y="187" fontSize="15" text="邮箱:"/>
<mx:TextInput id="txtTel" x="170" y="148"/>
<mx:TextInput id="txtUserMail" x="170" y="190"/>
<mx:RemoteObject destination="someOneComeDes"
id="someOneCome"
endpoint="/BlazDSObject/messagebroker/amf" fault="failed()" />
</mx:Application>
在这里,Flex是通过AMF协议与Java对象进行交互的,其中endpoint定义了影射文件的消息协议,这个文件来自/WEB-INF/flex/services-config.xml中,影射对象的位置是通过remoting- service.xml影射的代码如下:
<channel-definition id="my-secure-amf"
class="mx.messaging.channels.SecureAMFChannel">
<endpoint url="//{server.name}:
{server.port}/{context.root}/messagebroker/amfsecure" class="flex.messaging.endpoints.SecureAMFEndpoint"/>
<properties>
<add-no-cache-headers>false</add-no-cache-headers>
</properties>
</channel-definition> remoting-service.xml
<?xml version="1.0" encoding="UTF-8"?> <service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object"
class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="someOneComeDes">
<properties>
<source>
com.cx.action.IntroduceOneself
</source>
</properties>
</destination>
</service>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
文章转载自:网络转载面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢