flex remoteObject java 交互

SambaGao 2009-10-10 11:37:22
以前一直用 HttpServices 连接. 后来发来有的项目用的是remoteObject 连接,有点看不懂,所
以用它先测试一下.不过呢.服务器部分不知道怎么写了?

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">


<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;

private function say():void {
var user:User = new User() ;
user.setId(1) ;
user.setName("hello") ;
sayRemote.SayHello(user) ;
}

private function SayRem(event:ResultEvent):void {
target.text = event.result as String ;
}

]]>
</mx:Script>
<mx:RemoteObject id="sayRemote">
<mx:method name="SayHello" result="SayRem(event)" />
</mx:RemoteObject>

<mx:TextInput id="n" change="say()"/>
<mx:Label text="target" id="target" />
</mx:Application>
...全文
522 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jv9 2009-10-11
  • 打赏
  • 举报
回复
第一步:为了测试Flex对复杂类型List的支持,所以我写了一个方法用于返回元素类型为Student的List。先看Student类代码:
package com.aptech.flex;

public class Student

{

private int sid;

private String sname;

public Student(int sid, String sname){

this.sid = sid;

this.sname = sname;

}

public Student(){

}

public int getSid(){

return this.sid;

}

public String getSname(){

return this.sname;

}

public void setSid(int sid){

this.sid = sid;

}

public void setSname(String sname){

this.sname = sname;

}

}

第二步:创建示意性的业务方法,返回List<Student>集合,习惯使用泛型,如果不用泛型应该也能处理。
package com.aptech.flex;

import java.util.*;

public class HelloWorld

{

public String sayHello(String str){

return str + "你好";

}

public List<Student> strList(){

List<Student> list = new ArrayList<Student>();

list.add(new Student(1, "张三"));

list.add(new Student(2, "李四"));

list.add(new Student(3, "王八"));

return list;

}

}

第三步:修改<Tomcat>/lcds/flex/remoting-config.xml配置文件,添加如下语句:

<destination id = "hw">

<properties>

<source>com.aptech.flex.HelloWorld</source>

<scope>application</scope>

</properties>

</destination>

在该文件中,貌似不能写中文注释,启动容器时出现异常。

第四步:创建Flex工程,定义<mx:RemoteObject />,内容如下:

<mx:RemoteObject id="hwro" destination="hw"></mx:RemoteObject>

这里的destination必须和第三步的<destination id = "hw">一致。

第五步:定义一个按钮,并触发单击事件。

<mx:Button x="123" y="154" label="访问JAVA类" click="doJava(event)"/>

doJava事件定义如下:

internal function doJava(event: Event): void{

//hwro.sayHello("李赞红");

hwro.strList();

hwro.addEventListener(ResultEvent.RESULT, onCallback);

}

以下是结果处理方法:

private function onCallback(event: ResultEvent): void{

var ac: ArrayCollection = event.result as ArrayCollection;

var arr: Array = ac.toArray();

var str: String = "";

for(var a in arr){

str += arr[a].sid + "," + arr[a].sname + ""n";

}

Alert.show(str);

}

Flex将Java类的List自动转换成了ArrayCollection类型,该示例中List元素类型为Student,则可以使用E.属性来访问。
SambaGao 2009-10-10
  • 打赏
  • 举报
回复
package
{
[RemoteClass(alias="User")]
public class User
{

public var name:String ;
public var id:int ;

public function User()
{
}

public function setName(name:String):void {
this.name = name ;
}

public function setId(id:int) :void {
this.id = id ;
}

public function getName():String {
return this.name ;
}

public function getId():int {
return this.id ;
}

}
}
水中影子 2009-10-10
  • 打赏
  • 举报
回复
http://blog.csdn.net/xuhuanchao
看看例子
gundamff 2009-10-10
  • 打赏
  • 举报
回复
http://www.blogjava.net/lzhidj/archive/2008/08/20/223199.html

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧