效果图
java: 实体类
package com.entitys;
import java.io.Serializable;
public class User implements Serializable{
/**
*
*/
private static final long serialVersionUID = -8688670730681593610L;
private Integer id;
private String userName;
private String passWord;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
}
java:服务层提供一个给flex服务类,很简单就是返回两个user对象的数组
package com.service;
import java.util.ArrayList;
import java.util.List;
import com.entitys.User;
public class UserService {
public List<User> getUserAll(){
List<User> users = new ArrayList<User>();
User user = new User();
user.setId(1);
user.setUserName("xiaomaha");
user.setPassWord("1234");
users.add(user);
User user2 = new User();
user2.setId(2);
user2.setUserName("xiaomaha2");
user2.setPassWord("1234");
users.add(user2);
return users;
}
}
blazeds设置就不贴出来了,我已经记录在博客中
FLEX4 客服端
结构图:
User.as
package entitys
{
//java和as实体映射
//alias=包+类名
[RemoteClass(alias="com.entitys.User")]
public class User
{
public function User()
{
}
public var id:int;
public var userName:String;
public var passWord:String;
}
}
remoteObjectFactory.as
destinationName=java remoting-config.xml 中的 <destination id="userService"> id名称
这样as就可以获取到java提供的服务对象
package remoteservice
{
import mx.rpc.remoting.RemoteObject;
public class RemoteObjectFactory
{
public function RemoteObjectFactory()
{
}
public static function newRemoteObject(destinationName:String):RemoteObject
{
var remoteObject:RemoteObject = new RemoteObject(destinationName);
return remoteObject;
}
}
}
UserService.as 接口 我只实现了getUserAll这个方法,其它方法只是定义而已
这个接口的实现类用于远程交互java对象的具体实现
package service.interfalses
{
import entitys.User;
import mx.collections.ArrayCollection;
import mx.rpc.remoting.RemoteObject;
public interface UserService
{
function saveUser(user:User):void;
function removeUser(userid:int):void;
function getUser(userName:String,passWord:String):RemoteObject;
function getUserAll():RemoteObject;
}
}
UserServiceImpl.as 实现类 as中返回值是异步的所以无法直接返回对象,类似dwr中的回调函数
getUserAll方法返回是一个RemoteObject让调用方来,出处理返回值!这个更加灵活,也很重要!
package service.implementse
{
import entitys.User;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;
import remoteservice.RemoteObjectFactory;
import service.interfalses.UserService;
public class UserServiceImpl implements UserService
{
private var remoteObject:RemoteObject=RemoteObjectFactory.newRemoteObject("userService");
public function UserServiceImpl()
{
}
public function saveUser(user:User):void
{
}
public function removeUser(userid:int):void
{
}
public function getUser(userName:String, passWord:String):RemoteObject
{
return null;
}
public function getUserAll():RemoteObject
{
remoteObject.getUserAll();
return remoteObject;
}
}
}
flexClient.mxml 展示台
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;
import service.implementse.UserServiceImpl;
import service.interfalses.UserService;
private var userService:UserService = new UserServiceImpl();
[Bindable]
private var users:ArrayCollection = new ArrayCollection();
protected function getUserAll_clickHandler(event:MouseEvent):void
{
var ro:RemoteObject = userService.getUserAll();
ro.addEventListener(ResultEvent.RESULT,resultUserAll);
}
private function resultUserAll(event:ResultEvent):void
{
users=event.result as ArrayCollection;
}
]]>
</fx:Script>
<s:Button label="获取所有用户信息" id="getUserAll" click="getUserAll_clickHandler(event)" x="34" y="239"/>
<mx:DataGrid x="96" y="37" dataProvider="{users}">
<mx:columns>
<mx:DataGridColumn headerText="用户ID" dataField="id"/>
<mx:DataGridColumn headerText="用户名" dataField="userName"/>
<mx:DataGridColumn headerText="用户密码" dataField="passWord"/>
</mx:columns>
</mx:DataGrid>
</s:Application>