<mx:Script> <![CDATA[ import mx.controls.DateField; import control.print.FormPrintView; import mx.managers.PopUpManager; import vo.User; import mx.collections.ArrayCollection; import mx.rpc.events.ResultEvent; import mx.rpc.events.FaultEvent; import mx.utils.ArrayUtil; import mx.controls.Alert; import control.showGoods; import mx.printing.PrintDataGrid; import mx.printing.FlexPrintJob; import control.*; [Bindable] private var users:ArrayCollection; [Bindable] private var myUser:User=new User(); private function selectedDGrid():void{ userName.text=userdg.selectedItem.username; password.text=userdg.selectedItem.password; company.text=userdg.selectedItem.company; note.text=userdg.selectedItem.note; } private function getAllUsers_resultHandler(event:ResultEvent):void { users = event.result as ArrayCollection; } private function getUserByCompanyName_resultHandler(event:ResultEvent):void { users = event.result as ArrayCollection; } private function getUsersByQuery_resultHandler(event:ResultEvent):void { users = event.result as ArrayCollection; } private function insertUser():void{ myUser.username=userName.text; myUser.password=password.text; myUser.company=company.text; myUser.note=note.text; user.insertUser(myUser); Alert.show("save a user named : "+userName.text,"SAVE!"); } private function clearTexts():void{ userName.text=''; password.text=''; company.text=''; note.text=''; } private function updateUser():void{ var uu:User=userdg.selectedItem as User; uu.username=userName.text; uu.password=password.text; uu.company=company.text; uu.note=note.text; user.updateUser(uu); Alert.show("update a user!","UPDATE!"); } private function deleteUser():void{ user.deleteUser(userdg.selectedItem.id); Alert.show("delete a user named : "+userdg.selectedItem.username,"DELETE!"); } private function faultHandler(event:FaultEvent):void { Alert.show(event.fault.faultString, "Error"); } public function doPrint():void { var printJob:FlexPrintJob = new FlexPrintJob(); if (printJob.start()) { var thePrintView:FormPrintView= new FormPrintView(); Application.application.addChild(thePrintView); thePrintView.width=printJob.pageWidth; thePrintView.height=printJob.pageHeight; thePrintView.myDataGrid.dataProvider=userdg.dataProvider; thePrintView.showPage("single"); if(!thePrintView.myDataGrid.validNextPage) { printJob.addObject(thePrintView); } else { thePrintView.showPage("first"); printJob.addObject(thePrintView); thePrintView.pageNumber++; while(true) { thePrintView.myDataGrid.nextPage(); thePrintView.showPage("last"); if(!thePrintView.myDataGrid.validNextPage) { printJob.addObject(thePrintView); break; } else { thePrintView.showPage("middle"); printJob.addObject(thePrintView); thePrintView.pageNumber++; } } } Application.application.removeChild(thePrintView); } printJob.send(); } ]]> </mx:Script>
AS一如往常,木有什麼特別。下面是遠程調用的RemoteObject 調用實現:
<mx:RemoteObject id="user" destination="userservice" channelSet="{channelSet}" fault="faultHandler(event)" source="com.qiyun.spritis.pojo.User"> <mx:method name="getAllUsers" result="getAllUsers_resultHandler(event)"/> <mx:method name="getUserByCompanyName" result="getUserByCompanyName_resultHandler(event)"> <mx:arguments> <arg1> {companies.selectedItem.data}</arg1> </mx:arguments> </mx:method> <mx:method name="updateUser" > <mx:arguments> <arg1> {myUser} </arg1> </mx:arguments> </mx:method> <mx:method name="insertUser"> <mx:arguments> <arg1> {myUser} </arg1> </mx:arguments> </mx:method> <mx:method name="deleteUser" > <mx:arguments> <arg1> {userdg.selectedItem.id} </arg1> </mx:arguments> </mx:method> </mx:RemoteObject>
後面就是一些界面代碼,沒有太大參考價值,這裏把圖貼出來吧。
以上是ibatis和Spring的部分。下面是Hibernate。用了LCDS的data-management.重要的客戶端代碼是這一行:
<mx:DataService id="hib_good" destination="hibernate_goods" autoCommit="true" />
另外,關鍵的配置在客戶端的data-management-config.xml裏面:
<?xml version="1.0" encoding="UTF-8"?> <service id="data-service" class="flex.data.DataService"> <adapters> <adapter-definition id="actionscript" class="flex.data.adapters.ASObjectAdapter" default="true"/> <adapter-definition id="java-dao" class="flex.data.adapters.JavaAdapter"/> </adapters> <default-channels> <channel ref="my-rtmp"/> </default-channels> <destination id="hibernate_goods"> <adapter ref="java-dao" /> <properties> <use-transactions>true</use-transactions> <source>flex.data.assemblers.HibernateAssembler</source> <scope>application</scope> <metadata> <identity property="id" /> </metadata> <network> <paging enabled="false" pageSize="10" /> <throttle-inbound policy="ERROR" max-frequency="500" /> </network> <server> <fill-method> <name>fill</name> <params>java.util.List</params> </fill-method> <hibernate-entity>com.qiyun.spritis.pojo.Goods</hibernate-entity> <update-conflict-mode>property</update-conflict-mode> <delete-conflict-mode>object</delete-conflict-mode> <fill-configuration> <use-query-cache>false</use-query-cache> <allow-hql-queries>true</allow-hql-queries> </fill-configuration> </server> </properties> </destination> </service>
hibernate部分列表的頁面圖片如下:
到這裏就差不多了。Java代碼很簡單,沒有複雜的邏輯。這個就是5個小時做出來的師徒奶茶訂閱系統。以後和徒兒們一起喝奶茶就可以用這個了。Flex的魅力是無窮的,不過最近在學習JS和CSS還有些前端的東西。後續一點點分享出來吧。