===========================================================
Flex RemoteObject 简单应用Demo(转载)
===========================================================
作者: globlefly(http://globlefly.itpub.net)
发表于:2005.11.20 09:55
分类: Flex
出处:http://globlefly.itpub.net/post/7625/46292
---------------------------------------------------------------
发表于:2005.11.20 09:55
分类: Flex
出处:http://globlefly.itpub.net/post/7625/46292
---------------------------------------------------------------
主要实现java类方法调用,java对象数组传递,flex数据传递
<remote-objects>
<whitelist>
<!-- whitelist config for unnamed objects -->
<unnamed>
<source>*</source>
</unnamed>
</whitelist>
</remote-objects>
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" verticalGap="10" initialize="initApp()">

<mx:Script>
<
]]>
</mx:Script>

<mx:RemoteObject id="userRO" source="UserManager"
result="userList=event.result" fault="alert(event.fault.faultstring, 'Error')">
</mx:RemoteObject>

<mx:HBox>
<mx:Label text="Search"/>
<mx:TextInput id="key" width="120"/>
<mx:Button label="Get User List" click="userRO.getUser(key.text)"/>

</mx:HBox>

<mx:DataGrid dataProvider="{userList}" width="100%">
<mx:columns>
<mx:Array>
<mx:DataGridColumn columnName="id" headerText="Id"/>
<mx:DataGridColumn columnName="name" headerText="Name"/>
<mx:DataGridColumn columnName="phone" headerText="Phone"/>
<mx:DataGridColumn columnName="email" headerText="Email"/>
</mx:Array>
</mx:columns>
</mx:DataGrid>

</mx:Application>

import java.util.ArrayList;


public class UserManager
{


public Object[] getUser(String name)
{
ArrayList users = init();
ArrayList finder = new ArrayList();

for(int i=0; i<users.size(); i++)
{
User user = (User)users.get(i);

if(user.getName().equals(name))
{
finder.add(user);
}
}
return finder.toArray();
}


public Object[] getAllUser()
{
return init().toArray();
}


private ArrayList init()
{
ArrayList list = new ArrayList();

list.add(new User(1, "Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com"));
list.add(new User(2, "Louis Freligh", "555-219-2100", "lfreligh@fictitious.com"));
list.add(new User(3, "Ronnie Hodgman", "555-219-2030", "rhodgman@fictitious.com"));
list.add(new User(4, "Joanne Wall", "555-219-2012", "jwall@fictitious.com"));
list.add(new User(5, "Maurice Smith", "555-219-2012", "maurice@fictitious.com"));
list.add(new User(6, "Mary Jones", "555-219-2000", "mjones@fictitious.com"));
return list;

}

}

import java.io.Serializable;


public class User implements Serializable
{
private int id;
private String name;
private String phone;
private String email;


public User()
{

}


public User(int id)
{
this.id = id;
}


public User(int id, String name, String phone, String email)
{
this.id = id;
this.name=name;
this.phone=phone;
this.email=email;

}


public int getId()
{
return id;
}


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


public String getName()
{
return name;
}


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


public String getPhone()
{
return phone;
}
程序在以下环境编译执行通过:
flex 1.5 Trail Edition
Tomcat/5.0.19
j2sdk1.4.2_10
WindowsXp Sp2
java文件编译后未打包,.class文件直接放到{flex-dir}WEB-INFclasses 目录下
实体User.java注意要实现Serializable接口,否则无法将对象传递到Flex。
注意修改Flex的访问控制, flex-config.xml 增加<source>*</source>
<remote-objects>
<whitelist>
<!-- whitelist config for unnamed objects -->
<unnamed>
<source>*</source>
</unnamed>
</whitelist>
</remote-objects>
RemoteObjectDemo.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" verticalGap="10" initialize="initApp()">
<mx:Script>
<
]]>
</mx:Script>
<mx:RemoteObject id="userRO" source="UserManager"
result="userList=event.result" fault="alert(event.fault.faultstring, 'Error')">
</mx:RemoteObject>
<mx:HBox>
<mx:Label text="Search"/>
<mx:TextInput id="key" width="120"/>
<mx:Button label="Get User List" click="userRO.getUser(key.text)"/>
</mx:HBox>
<mx:DataGrid dataProvider="{userList}" width="100%">
<mx:columns>
<mx:Array>
<mx:DataGridColumn columnName="id" headerText="Id"/>
<mx:DataGridColumn columnName="name" headerText="Name"/>
<mx:DataGridColumn columnName="phone" headerText="Phone"/>
<mx:DataGridColumn columnName="email" headerText="Email"/>
</mx:Array>
</mx:columns>
</mx:DataGrid>
</mx:Application>
UserManager.java
import java.util.ArrayList;

public class UserManager
{

public Object[] getUser(String name)
{
ArrayList users = init();
ArrayList finder = new ArrayList();
for(int i=0; i<users.size(); i++)
{
User user = (User)users.get(i);
if(user.getName().equals(name))
{
finder.add(user);
}
}
return finder.toArray();
}

public Object[] getAllUser()
{
return init().toArray();
}

private ArrayList init()
{
ArrayList list = new ArrayList();
list.add(new User(1, "Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com"));
list.add(new User(2, "Louis Freligh", "555-219-2100", "lfreligh@fictitious.com"));
list.add(new User(3, "Ronnie Hodgman", "555-219-2030", "rhodgman@fictitious.com"));
list.add(new User(4, "Joanne Wall", "555-219-2012", "jwall@fictitious.com"));
list.add(new User(5, "Maurice Smith", "555-219-2012", "maurice@fictitious.com"));
list.add(new User(6, "Mary Jones", "555-219-2000", "mjones@fictitious.com"));
return list;
}
}
User.java
import java.io.Serializable;

public class User implements Serializable
{
private int id;
private String name;
private String phone;
private String email;

public User()
{
}

public User(int id)
{
this.id = id;
}

public User(int id, String name, String phone, String email)
{
this.id = id;
this.name=name;
this.phone=phone;
this.email=email;
}

public int getId()
{
return id;
}

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

public String getName()
{
return name;
}

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

public String getPhone()
{
return phone;
}





