本人因项目需要,要做报表,项目初步用flex做,我还是应届生,连flex是什么东西都不知道,坑爹的,我花了大概一天的时间,完成flex和服务器的交互
首先要知道flex是做页面的美化的,flex与服务器交互有2个组件,一是httpservice 还有一个是remoteobject。
下面我把我的第一个flex程序交给大家,我会把我在做这个demo的时候碰到的问题向大家说
<?xml version="1.0"?> <!-- Simple example to demonstrate the ColumnChart and BarChart controls. --> <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" creationComplete="callLater(init)"> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.graphics.codec.JPEGEncoder; import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; [Bindable] private var medalsAC:ArrayCollection = new ArrayCollection(); private function init():void{ service.send(); } //调用失败 protected function service_faultHandler(event:FaultEvent):void { Alert.show("失败了:"+event.message,"提示"); } //调用成功 protected function service_resultHandler(event:ResultEvent):void { //一开始这边我直接把event.result as ArrayCollection一直不行,因为穿过来的就是全字符串了 //后来我就问了一个人就说把那边的 HTTPService添加返回的格式resultFormat="text"然后再在客户端解析 //通过json解析后,就跟jquery一样了list就会自动的变成数组,数组里面放的就是java的对象,这样就把对象添加到你的数据源 var ob:Object=JSON.parse(event.result.toString()); for (var i:int = 0; i < ob.length; i++) { medalsAC.addItem(ob[i]); } } ]]> </fx:Script> <fx:Declarations> <s:HTTPService id="service" url="http://localhost:8080/FlexAndJava_Server/textflex" useProxy="false" method="POST" fault="service_faultHandler(event)" result="service_resultHandler(event)" resultFormat="text">//一开始我这边没有规定resultFormat,服务器写回的数据 //是一个list里面有java对象 </s:HTTPService> <!-- Define custom colors for use as fills. --> <mx:SolidColor id="sc1" color="yellow" alpha=".8"/> <mx:SolidColor id="sc2" color="0xCCCCCC" alpha=".6"/> <mx:SolidColor id="sc3" color="0xFFCC66" alpha=".6"/> <!-- Define custom Strokes for the columns. --> <mx:SolidColorStroke id="s1" color="yellow" weight="2"/> <mx:SolidColorStroke id="s2" color="0xCCCCCC" weight="2"/> <mx:SolidColorStroke id="s3" color="0xFFCC66" weight="2"/> </fx:Declarations> <mx:Panel title="教学计划报表" height="100%" width="100%" layout="horizontal"> <mx:ColumnChart id="column" height="399" width="45%" paddingLeft="5" paddingRight="5" showDataTips="true" dataProvider="{medalsAC}" > <mx:horizontalAxis> <mx:CategoryAxis categoryField="country"/> </mx:horizontalAxis> <mx:series> <mx:ColumnSeries xField="country" yField="gold" displayName="Gold" fill="{sc1}" stroke="{s1}" /> <mx:ColumnSeries xField="country" yField="silver" displayName="Silver" fill="{sc2}" stroke="{s2}" /> <mx:ColumnSeries xField="country" yField="bronze" displayName="Bronze" fill="{sc3}" stroke="{s3}" /> </mx:series> </mx:ColumnChart> <mx:Legend dataProvider="{column}"/> </mx:Panel> </s:Application>
小弟虽然还有很多不懂,但是 改改还行,这个demo我也是网上给我找来的,我还是有很多不太理解,希望有人能解答为什么