私のシナリオは:Vaadin 7.7.10を使用して、生成されたファイルをクリックして生成します。Vaadin 7 - 動的に作成されたファイルの即時ダウンロード
私は、byte[]
(必要に応じてOutputStream
に簡単に変更することもできます)を返すジェネレータメソッドを持っています。それからStreamResource
を作成します。だから私はリソースをダウンロードする準備ができているが、今は何ですか?
FileDownloader
でアプローチを使用することはできませんが、実際には拡張ボタンを実際にクリックする前にページが表示されるたびにファイルを生成する必要があるためです(そうしたくありません要求に応じてのみ使用される非常に高価な操作)。
Page.getCurrent().open(streamResource, null, false)
を使用して所望の効果を達成することができましたが、
Resource
引数を持つ
.open
は7をVaadinで廃止されましたので、私は
は、任意の回避策または別のアプローチにあります...たくない、それに依存していますこの?
FileDownloaderをクリックしてファイルを生成できないのはなぜですか?あなたがStreamSourceを実装するカスタムクラスを作っていると思っています。 getStreamメソッドをオーバーライドしてファイル生成を行うことができますか? – Jay
このスレッドを見てください:https://vaadin.com/forum#!/thread/2864064 –
あなたは正しい、ジェイ。 StreamSourceのカスタムクラスをonClickイベントの中に入れてしまったので混乱していました。「これはクリック後のみですが、実際のクリックの前にFileDownloaderを拡張する必要があります」のようでした。私がする必要があったのは、生成コードをコンストラクタの中に置き、FileDownloaderを拡張することだけでした。それからそれは "オンデマンド"で正しく動作します。 – Ellrohir