答網(wǎng)友提問,做了一個RemoteObject的簡單Demo。
主要實現(xiàn)java類方法調用,java對象數(shù)組傳遞,flex數(shù)據(jù)傳遞
程序在以下環(huán)境編譯執(zhí)行通過:
flex 1.5 Trail EditionTomcat/5.0.19
j2sdk1.4.2_10
WindowsXp Sp2
java文件編譯后未打包,.class文件直接放到{flex-dir}\WEB-INF\classes 目錄下
實體User.java注意要實現(xiàn)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;
}


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


public String getEmail()
{
return email;
}


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

}
