答网友提问,做了一个RemoteObject的简单Demo。
主要实现java类方法调用,java对象数组传递,flex数据传递

程序在以下环境编译执行通过:
flex 1.5 Trail Edition
Tomcat/5.0.19
j2sdk1.4.2_10
WindowsXp Sp2


java文件编译后未打包,.class文件直接放到{flex-dir}\WEB-INF\classes 目录下
实体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>
        
<![CDATA[
        var userList;
    
        function initApp() {
            userRO.getAllUser();
        }

        ]]
>
    
</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;
    }


    
public void setPhone(String phone) {
        
this.phone = phone;
    }


    
public String getEmail() {
        
return email;
    }


    
public void setEmail(String email) {
        
this.email = email;
    }


}