2011-12-13 71 views
0

我想讓用戶按下excel按鈕,並提示下載excel文件。我通常這樣做:Flex:通過Servlet導出Excel

var dest:String = excelEndpoint; 

     var request:URLRequest = new URLRequest(); 
     request.url = dest; 
     fr.download(request,'Locates.xls'); 
     fr.addEventListener(HTTPStatusEvent.HTTP_STATUS, handleStatus); 
     fr.addEventListener(IOErrorEvent.IO_ERROR, handleErr); 

但是,現在我需要傳遞一個對象到servlet。眼看你不能做到這一點與我的URLRequest試圖用的HTTPService:

var service:HTTPService = new HTTPService(); 
     service.url = excelEndpoint; 
     service.method = "POST"; 
     service.showBusyCursor = true; 
     service.addEventListener("result", httpResult); 
     service.addEventListener("fault", httpFault); 
     service.send(myObject); 

現在,我可以讓我的數據(myObject的)到servlet成功,但我沒有得到提示下載。

我該怎麼做? HTTPService甚至有可能嗎?

感謝您的任何有用的提示。

回答

0

我不認爲有任何事情可以通過Flash Player的遠程請求來提示用戶下載內容。我過去這樣做的方式有兩個:

  1. 遠程請求ping服務器生成excel文件並將其保存到臨時目錄。作爲調用的結果,該請求會向Flex應用程序返回一個URL。
  2. 當Flex應用程序獲得結果 - 一個URL - 它創建一個URL請求並在新窗口中彈出它,提示用戶下載生成的Excel表單。

    我沒有看到一種方法來做到這一點;因爲Flex HTTPService調用的返回值傳遞給Flash Player,而不是瀏覽器。

+0

當你不必通過Java servlet比一堆鍵/值對更復雜時,你可以做到這一點。但是,就我而言,我需要傳遞一個複雜的對象;這就是困難。 – fumeng 2011-12-13 21:18:24

+0

在你的問題中,你說你已經能夠傳遞複雜的對象。我引用「現在我可以將我的數據(myObject)成功地發送到servlet」。我讀過的問題與將數據正確傳遞到服務器無關。 – JeffryHouser 2011-12-13 21:23:54

0

解決:

我想用1個遠程調用,我發現要做到這一點,同時通過包含集合的對象的方式來做到這一點是這樣的:

var uv:URLVariables = new URLVariables(); 
uv.typesColl = myObj.types.toString(); 
uv.partiesColl = myObj.parties.toString(); 
uv.statuses = myObj.statuses.toString(); 

基本上,創建每個集合的URLVariables對象的屬性,然後設置所有集合toString();

希望能幫助別人。