fileDownloadActionListenerタグは、アクション・ソース(<commandButton>、<commandLink>など)がユーザーにファイルのコンテンツをプログラム的に送信するのを可能にする宣言的方法です。オプションで、特定のコンテンツ・タイプおよびファイル名を使用できます。ファイルはXMLHttp AJAXリクエストではなく、通常のリクエストを使用してダウンロードする必要があるため、親コンポーネントでその属性がサポートされていると、このタグはpartialSubmitを強制的にfalseにします。またこれは、リージョン内でのファイルのダウンロードを実行するためのサポートされている唯一の方法です。
この例では、単純なHello there!ファイルをユーザーに送信します。
<source> <af:commandButton value="Say Hello"> <af:fileDownloadActionListener filename="hello_txt" contentType="text/plain; charset=utf-8" method="#{bean.sayHello}"/> </af:commandButton>
</source>
<source> public void sayHello(FacesContext context, OutputStream out) throws IOException { OutputStreamWriter w = new OutputStreamWriter(out, "UTF-8"); w.write("Hi there!"); // The stream is automatically closed, but since we wrapped it, // we'd better flush our writer w.flush(); }
</source>
注意: ファイル名が日本語文字のようなマルチバイトのとき、Internet ExplorerではfileDownloadActionListenerタグに制限があります。ファイル名がマルチバイトでアスキー拡張子(例; .txtまたは.doc)を持たないとき、ファイル名はファイルのダウンロード・ボックスで正しく表示されません。
名前 | 型 | ELのサポート | 説明 |
---|---|---|---|
contentType | String | あり | text/plain、text/csv、application/pdfなど、ファイルのMIMEタイプ。 |
filename | String | あり | 提案されたオブジェクトのファイル名。設定する場合、通常、「ファイルの保存」ダイアログが表示されますが、最終的にこれはブラウザにアップされます。設定しない場合、通常は、可能なときにはコンテンツがブラウザにインライン表示されます。 |
method | MethodExpression | ELのみ | ファイル・コンテンツのダウンロードで使用されるメソッド。このメソッドは、FacesContextおよびOutputStreamの2つの引数を取ります。OutputStreamは自動的に閉じるため、このメソッドの唯一の機能は、すべてのバイトをOutputStreamに書き込むことです。 |