DIでセットしよう

またもやyone098さんにコメントしていただき setter injection の重要さを体感できた。確かにHttpServletResponseもセットすればもっと簡単にテストできるし、管理も楽ってもんですよ。指摘がありがたい。
前のコードをフィールドが存在するものとして書き直し。

  response.setContentType("application/pdf");
  try {
    OutputStream out = response.getOutputStream();
    writePdf(out);
    out.flush();
    out.close();
  } catch (IOException e) {
    // TODO 例外処理
    e.printStackTrace();
  }
  facesContext.responseComplete();
  return null;

必要な処理だけが書いてある感があっていいなぁ。responseCompleteはJSFでresponseに直接書き出す場合のお作法ってことを理解しちゃえばなんてことはないかもしれない。