Flex RemoteObject 简单应用Demo

答网友提问,做了一个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;
    }


}

posted @ 2005-11-15 22:48 dannyr|一个都不能少! 阅读(4752) 评论(5)  编辑 收藏 所属分类: Flex技术

  回复  引用    
#1楼 2005-11-16 10:35 | Snail [未注册用户]
你的例子我看明白了,不过问题还没有解决。。

我在JAVA文件里定义了一个查询数据库的操作,返回了一个ResultSet,我想显示其中一条记录的某一个字段,怎么办?
  回复  引用  查看    
#2楼 [楼主]2005-11-16 13:42 | dannyr|一个都不能少!      
你可以在这里
list.add(new User(1, "Christina Coenraets", "555-219-2270", "ccoenraets@fictitious.com"));

把User的信息改成从数据库获取!这样从java到flex是传递对象数组,而不用ResultSet



  回复  引用    
#3楼 2005-11-17 21:12 | Snail [未注册用户]
问题已经解决了~~原来ResultSet的数据结构是那个样子的,里面还有一个数组
用hibernate得到的就直接是List或user对象了

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-11-16 12:46 编辑过
 
另存  打印