ファイルダウンロード OutputStreamに直接書き出したい場合

まあ調べればすぐわかるんだけれども、日本語の情報はなかったようなので。
業務で必要になった、POIで処理したExcelをダウンロードするボタン。
例外処理とかてけとー。

//請求書ダウンロードボタン
Button<Void> downloadButton = new Button<Void>("downloadButton"){
  private static final long serialVersionUID = 1L;
  @Override
  public void onSubmit() {
    IResourceStream stream = new AbstractResourceStreamWriter(){
      private static final long serialVersionUID = 1L;
      @Override
      public void write(OutputStream output) {
        try {
          HSSFWorkbook workbook = //ここでExcel編集とかなんとか
          workbook.write(output);//適当に書き出す
        } catch (Exception e) {
          // TODO 例外処理
          e.printStackTrace();
        }
      }
      @Override
      public String getContentType() {
        return "application/vnd.ms-excel";
      }
    };
    //TODO ダウンロードファイル名
    IRequestTarget target = new ResourceStreamRequestTarget(stream,"text.xls");
    getRequestCycle().setRequestTarget(target);
  }
};

お手軽。さすがWicket