PrimeFacesにはファイルダウンロードのコンポーネントがあって、これは非常に便利なのですが、Ajax動作ができないのでダウンロードすべきデータがないときなどのエラー処理ができません。 そこで、別ボタン経由でダウンロード開始を行ってエラー処理を行うようにしてみます。 まずダウンロードデータをStreamedContentとして用意します。 private StreamedContent content; public StreamedContent getContent() { return content; } 通常はここでデータを生成して返すのですが、ここでは用意されたデータを返すだけにしておきます。 ダウンロードコンポーネントを配置します。 <p:commandButton id="dlButton" value="ダウンロード(非表示)" ajax="false" style=