2011-12-13 9 views
0

ユーザーがExcelのボタンを押して、Excelファイルをダウンロードするように求められます。私は通常次のようにします:Flex:サーブレット経由で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); 

しかし、今ではオブジェクトをサーブレットに渡す必要があります。 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という)私のデータを取得することができますが、私は、ダウンロードのためのプロンプトが表示されません。

どうすればいいですか? HTTPServiceでも可能ですか?

ご協力いただきありがとうございます。

答えて

0

Flash Playerから何かをダウンロードしてもらうために何かできることはありません。私が過去にこれをしたのは、2つです。

  1. エクセルファイルを生成して一時ディレクトリに保存するリモートリクエストpingサーバー。リクエストは、コールの結果としてFlexアプリケーションへのURLを返します。
  2. Flexアプリケーションが結果(URL)を取得すると、URLリクエストが作成され、新しいウィンドウに開き、生成されたExcelシートをダウンロードするように促します。

    ワンショットでこれを行う方法はありません。 Flex HTTPService呼び出しからの戻り値は、ブラウザではなくFlash Playerに送られるためです。

    を私は1回のリモートコールでこれを実現したいと私はコレクションを含まれているオブジェクトを渡しながらこれを行うに見つかった方法がこれです:

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

    基本的には、作成解決しよう

+0

Javaサーブレットを複数のキーと値のペアよりも複雑なものにする必要がない場合に、これを実行できます。しかし、私の場合、私は複雑なオブジェクトを渡す必要があります。それはこすりです。 – fumeng

+0

あなたはあなたが既に複雑なオブジェクトを渡すことができたと言った。私は "今、私のデータ(myObject)をサーブレットに正常に取得できます"と言います。私が読んだ質問は、データをサーバーに適切に渡すこととは何の関係もありませんでした。 – JeffryHouser

+0

右:複雑なデータを渡すことなくダウンロードを促すことも、複雑なデータを渡すこともできますが、ダウンロードを促すことはできません。 – fumeng

0

各コレクションのURLVariablesオブジェクトのプロパティ。次にすべてのコレクションをtoString()に設定します。

誰かを助ける希望。

+0

URL文字列の文字数制限は次のとおりです。http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url。あなたのオブジェクトの文字列表現がURLを長すぎるとは限りません。あなたは大丈夫です。 – JeffryHouser

+0

非常に良い点、ありがとうございます。 – fumeng