Flex通過RemoteObject呼叫java例項:flex傳入引數以及接收java返回結果
阿新 • • 發佈:2019-02-15
Myeclipse10.0,Flash Builde4.7,jdk:1.7;
前言:
Flex之前叫做Flex,後面改名字為flash了,而且在flash builder4.5的時候還可以像c#一樣拉控制元件出來進行程式設計,但是到了4.7就不能拉控制元件了。
正文:
本篇介紹Flex呼叫java,分別給出flex傳入引數以及接收java返回結果的例子。工程一共有兩個:一個java web工程,一個flex工程。工程可以在資源頁下載:http://download.csdn.net/detail/fansy1990/6540451 。
先看下flex的配置:
flex工程中接收java返回的結果可以有兩種方式(不過歸根結底就一個:使用event):
1. 第一種:參考:http://www.csdn123.com/html/blogs/20130618/23384.htm
flex中的button click呼叫method1方法,然後method1方法執行data_provider的getUserList方法,結果繫結在event中,如果正確則返回result*方法,否則返回fault*方法;其RemoteObject配置如下:public function method1():void { // 這裡使用的應該是自動註冊的功能 data_provider.getUserList(); // get real Data } /** * 呼叫init方法成功後執行的方法 */ public function data_provider_resultHandler(event:ResultEvent):void{ var data_ :ArrayCollection=new ArrayCollection(); data_= event.result as ArrayCollection; dataGrid.dataProvider=data_; } /** * 呼叫init方法失敗後執行的方法 */ public function data_provider_faultHandler(event:FaultEvent):void{ Alert.show(event.fault.toString()); }
這個remoteObject中需要配置result和fault方法;<!-- 使用第一種方法的配置 data_provider對應的源是 serviceDataProvider 在remoting-config.xml中配置--> <mx:RemoteObject id="data_provider" destination="dataProvider" source ="service.DataProvider" endpoint="http://localhost:8080/FlexServer1.0/messagebroker/amf" result="data_provider_resultHandler(event)" fault="data_provider_faultHandler(event)"/>
2. 第二種: 參考:http://www.cnblogs.com/RocD-DuPeng/articles/1751040.html
呼叫方法method2,進行手動註冊事件:
/**
* 第二種獲取資料的方法
* 參考:http://www.cnblogs.com/RocD-DuPeng/articles/1751040.html
*/
public function method2():void{
// 手動註冊
data_provider2.getUserList();
data_provider2.addEventListener(ResultEvent.RESULT,getUserList2);
data_provider2.addEventListener(FaultEvent.FAULT,getUserList22);
}
public function getUserList2(event:ResultEvent):void{
var data_my:ArrayCollection= ArrayCollection(event.result);
var data_show:ArrayCollection=new ArrayCollection();
var i:int;
for( i=0;i<data_my.length;i++){
var u:User=User(data_my.getItemAt(i));
data_show.addItem(u);
}
dataGrid.dataProvider=data_show;
}
public function getUserList22(event:FaultEvent):void{
Alert.show(event.fault.toString());
}
不過這裡在RemoteObject中就不用配置result和fault了:
<!-- 使用第二種方法的配置 data_provider對應的源是 serviceDataProvider ,在remoting-config.xml中配置-->
<mx:RemoteObject id="data_provider2" destination="dataProvider2"
source ="service.DataProvider"
endpoint="http://localhost:8080/FlexServer1.0/messagebroker/amf"
/>
3. 呼叫引數就直接在配置的RemoteObject中的方法直接填入引數即可,比如求分頁中的上一頁的時候:// prepage method
public function preMethod():void{
--currPage;
if(currPage<0){
currPage=0;
}
data_provider2.getUserList(currPage,int(text1.text));
data_provider2.addEventListener(ResultEvent.RESULT,preMethod_Handler);
}
// prepare page method add dataProvider
private function preMethod_Handler(event:ResultEvent):void{
var data_ :ArrayCollection=new ArrayCollection();
data_= event.result as ArrayCollection;
dataGrid.dataProvider=data_;
}
訪問路徑:http://localhost:8080/FlexServer1.0/flex/flex_datagrid.html ,若部署到伺服器,那麼需要修改RemoteObject中的配置為相應伺服器的IP;
程式執行後的效果如下:
備註:若要執行FlexServer1.0需修改mysql連線: 1.修改config/config.properties檔案中的資料庫連線;2.在資料庫中配置相應的表:執行data.sql檔案;
分享,成長,快樂