2011-12-13 52 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();

希望能帮助别人。

相关问题