









首先说明下:以下的四个例子中每一个都含有客户端获取DataGrid数据的代码
下面的每个mxml中都涉及用到的组件mxml,位于com/control目录下
第一: HTTPService获取服务器端数据显示DataGrid
HTTPService的方式一
mxml内容
HTTPService的方式二
第二:URLRequest方式获取
mxml内容
针对上面两种方式的servlet处理类为
package com.test;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.json.JSONArray;
public class FindDataServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("执行Servlet了哦。。。。。。。。。。。。");
List<MyObject> orgData=new ArrayList<MyObject>();
for(int x= 1; x <= 555; x++ )
{
MyObject ob=new MyObject();
ob.setId("CHENEY"+x);
ob.setCode("HENAN"+x);
ob.setTotal(x*10);
ob.setCustomer("CUS"+x);
ob.setRegister("EMP"+x);
ob.setMemo("MEMO"+x);
ob.setState("STATE"+x);
orgData.add(ob);
}
JSONArray json=JSONArray.fromObject(orgData);
String datas=json.toString();
System.out.println(datas);
response.getWriter().write(datas);
}
}
当然这里JAVA程序也用到JSON相关类,一般要使用JSON的话要使用到六个包

第三:RemoteObject 获取方式
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"
xmlns:control="com.control.*"
creationComplete="creationCompleteHandle()"
minWidth="955" minHeight="600">
<fx:Style>
Application{
fontSize:12;
}
</fx:Style>
<fx:Declarations>
<s:RemoteObject id="findData" destination="findData" result="findDate_resultHandler(event)"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import com.adobe.serialization.json.JSON;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
private var pageIndex:int=0;
private var pageSize:int=5;
private function creationCompleteHandle():void{
var orgData:ArrayCollection = new ArrayCollection();
for( var x:uint = 1; x <= 555; x++ )
{
var obj:Object = new Object();
obj.ID = "id " + x.toString();
obj.Code="order "+x;
obj.Total=x*1000;
obj.Customer= "customer "+x;
obj.Register = "employee";
obj.Memo="memo "+x;
obj.State="auditing state";
orgData.addItem(obj);
}
clientPagingBar1.dataGrid=DataGrid1;
clientPagingBar1.orgData=orgData;
clientPagingBar1.dataBind();
findData.findData();
}
protected function findDate_resultHandler(event:ResultEvent):void
{
var rawData:String = String(event.result);
//decode the data to ActionScript using the JSON API
//in this case, the JSON data is a serialize Array of Objects.
var arr:Array = (JSON.decode(rawData) as Array);
var dataArray:ArrayCollection = new ArrayCollection(arr);
//Alert.show(dataArray.getItemAt(0).id);
clientPagingBar2.dataGrid=DataGrid2;
clientPagingBar2.orgData=dataArray;
clientPagingBar2.dataBind();
}
]]>
</fx:Script>
<mx:VBox>
<mx:Label text="客户端分页" />
<mx:Canvas backgroundColor="white">
<mx:VBox width="100%" height="100%" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" verticalScrollPolicy="off" horizontalScrollPolicy="off">
<mx:DataGrid id="DataGrid1" verticalScrollPolicy="on" horizontalScrollPolicy="off">
<mx:columns>
<mx:DataGridColumn headerText="订单ID" dataField="ID" />
<mx:DataGridColumn headerText="订单编码" dataField="Code" />
<mx:DataGridColumn headerText="金额" dataField="Total" />
<mx:DataGridColumn headerText="客户" dataField="Customer" />
<mx:DataGridColumn headerText="销售员" dataField="Register" />
<mx:DataGridColumn headerText="备注说明" dataField="Memo" />
<mx:DataGridColumn headerText="状态" dataField="State" />
</mx:columns>
</mx:DataGrid>
<control:PagingBar id="clientPagingBar1" />
</mx:VBox>
</mx:Canvas>
<mx:Label text="服务器端分页" />
<mx:Canvas backgroundColor="white">
<mx:VBox width="100%" height="100%" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10" verticalScrollPolicy="off" horizontalScrollPolicy="off">
<mx:DataGrid id="DataGrid2" verticalScrollPolicy="on" horizontalScrollPolicy="off">
<mx:columns>
<mx:DataGridColumn headerText="订单ID" dataField="id" />
<mx:DataGridColumn headerText="订单编码" dataField="code" />
<mx:DataGridColumn headerText="金额" dataField="total" />
<mx:DataGridColumn headerText="客户" dataField="customer" />
<mx:DataGridColumn headerText="销售员" dataField="register" />
<mx:DataGridColumn headerText="备注说明" dataField="memo" />
<mx:DataGridColumn headerText="状态" dataField="state" />
</mx:columns>
</mx:DataGrid>
<control:PagingBar id="clientPagingBar2" />
</mx:VBox>
</mx:Canvas>
</mx:VBox>
</s:Application>
web-info/flex/remote-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter" default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="findData" >
<properties>
<source>com.test.FindGridData</source>
</properties>
</destination>
</service>
处理类
package com.test;
import java.util.ArrayList;
import java.util.List;
import net.sf.json.JSONArray;
public class FindGridData {
public String findData(){
System.out.println("执行我了。。。。。。。。。。。。。。。");
List<MyObject> orgData=new ArrayList<MyObject>();
for(int x= 1; x <= 555; x++ )
{
MyObject ob=new MyObject();
ob.setId("CHENEY"+x);
ob.setCode("HENAN"+x);
ob.setTotal(x*10);
ob.setCustomer("CUS"+x);
ob.setRegister("EMP");
ob.setMemo("MEMO"+x);
ob.setState("STATE");
orgData.add(ob);
}
JSONArray json=JSONArray.fromObject(orgData);
String datas=json.toString();
System.out.println(datas);
return datas;
}
}
四种方式显示图效果一样

最后附上corelib.swc和java相关的json必须jar包
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。