标准项目结构如图所示:
调用Java端List成功后如图所示:
package com.demo.service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class UserService { public List getUserList() { List resultList = new ArrayList(); for (int i = 1; i <= 10; i++) { Map map = new HashMap(); map.put("id", i); map.put("name", "name" + i); map.put("age", 17 + i); map.put("email", "China" + i + "@gmail.com"); resultList.add(map); } return resultList; } }
package com.user.command { import com.adobe.cairngorm.commands.ICommand; import com.adobe.cairngorm.control.CairngormEvent; import com.user.event.UserEvent; import com.user.service.UserProxy; import mx.collections.ArrayCollection; import mx.rpc.IResponder; import com.user.model.UserModelLocator; import mx.controls.Alert; public class UserCommand implements ICommand, IResponder { public function UserCommand() { } //执行调用 public function execute(event:CairngormEvent):void { var userEvent:UserEvent=UserEvent(event); var userService:UserProxy=new UserProxy(this); userService.queryStudentList(); } //更新模型 public function result(data:Object):void { var userList:ArrayCollection=data.result as ArrayCollection; UserModelLocator.getInstance().userList=userList; } public function fault(info:Object):void { Alert.show("Fail Error "); } } }
package com.user.service { import com.adobe.cairngorm.business.ServiceLocator; import mx.rpc.IResponder; public class UserProxy { private var responder:IResponder; private var service:Object; public function UserProxy(responder:IResponder) { //获取远程对象 this.service=ServiceLocator.getInstance().getRemoteObject("UserService"); this.responder=responder; } public function queryStudentList():void { //调用方法 var call:Object=this.service.getUserList(); call.addResponder(responder); } } }
<?xml version="1.0" encoding="utf-8"?> <s:Panel xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300" creationComplete="init()"> <fx:Script> <![CDATA[ import com.user.event.UserEvent; import mx.collections.ArrayCollection; import com.adobe.cairngorm.control.CairngormEventDispatcher; [Bindable] public var userList:ArrayCollection; private function init():void{ var userEvent:UserEvent=new UserEvent(); CairngormEventDispatcher.getInstance().dispatchEvent(userEvent); } ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <s:DataGrid x="0" y="0" width="100%" height="100%" dataProvider="{userList}" requestedRowCount="10"> <s:columns> <s:ArrayList> <s:GridColumn dataField="id" headerText="ID"></s:GridColumn> <s:GridColumn dataField="name" headerText="姓名"></s:GridColumn> <s:GridColumn dataField="age" headerText="年龄"></s:GridColumn> <s:GridColumn dataField="email" headerText="邮箱"></s:GridColumn> </s:ArrayList> </s:columns> </s:DataGrid> </s:Panel>
<?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" xmlns:service="com.user.service.*" xmlns:controller="com.user.controller.*" xmlns:view="com.user.view.*" minWidth="955" minHeight="600"> <fx:Script> <![CDATA[ import com.user.model.UserModelLocator; [Bindable] public var userModel:UserModelLocator=UserModelLocator.getInstance(); ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <!--实例化--> <service:UserServiceLocator id="userServiceLocater1"/> <!--实例化--> <controller:UserController id="userController1"/> </fx:Declarations> <!--导入组件--> <view:UserListView x="100" y="100" userList="{userModel.userList}"/> </s:Application>
cairngorm3: http://opensource.adobe.com/svn///opensource/cairngorm3/
cairngorm2: http://www.adobe.com/devnet/flex/articles/cairngorm_pt1.html
http://sourceforge.net/adobe/cairngorm/wiki/Downloads/