Spring 3 MVCの最適な実践と理解(9)
6702 ワード
個人学習の参考になるので、スプレーしないでください.
9.複数のリソースを実現するExcelとPDFビューを作成します.
ここで特定の日付の予約メッセージを生成するための要約レポートのコントローラはクラスです.
上のコードからは、同じ論理ビューを返しているかが明確に分かります.「reervationSummary」です.
9.1)Excelビューを作成します.
ここではApache POIライブラリのサポートを追加する必要があります.
Excelビューを作成する処理クラス:
9.2)PDFビューを作成します.
ここでiTextライブラリのサポートを追加する必要があります.
PDFビューの処理クラスを作成します.
----------------------------------------------------------
添付ファイルはシリーズ記事の例示コードで、eclipse 3.7.1で実行されます.
参考:
jyonのブログ:を選択します spring 3 MVC国際化支援の中国語文字化け」
Gary Markなどの書籍:「Spring Recipes」2 d
9.複数のリソースを実現するExcelとPDFビューを作成します.
ここで特定の日付の予約メッセージを生成するための要約レポートのコントローラはクラスです.
@Controller
@RequestMapping("/reservationSummary*")
public class ReservationSummaryController {
private ReservationService reservationService;
@Autowired
public ReservationSummaryController(ReservationService reservationService) {
this.reservationService = reservationService;
}
@RequestMapping(method = RequestMethod.GET)
public String generateSummary(
@RequestParam(required = true, value = "date") String selectedDate, Model model) {
List<Reservation> reservations = java.util.Collections.emptyList();
try {
Date summaryDate = new SimpleDateFormat("yyyy-MM-dd").parse(selectedDate);
reservations = reservationService.findByDate(summaryDate);
} catch (java.text.ParseException ex) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
ex.printStackTrace(pw);
throw new ReservationWebException("Invalid date format for reservation summary",new Date(),sw.toString());
}
model.addAttribute("reservations",reservations);
return "reservationSummary";
}
}
上のコードからは、同じ論理ビューを返しているかが明確に分かります.「reervationSummary」です.
9.1)Excelビューを作成します.
ここではApache POIライブラリのサポートを追加する必要があります.
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.5-FINAL</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
Excelビューを作成する処理クラス:
public class ExcelReservationSummary extends AbstractExcelView {
@SuppressWarnings({ "rawtypes", "unchecked", "deprecation" })
protected void buildExcelDocument(Map model, HSSFWorkbook workbook,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
List<Reservation> reservations = (List) model.get("reservations");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
HSSFSheet sheet = workbook.createSheet();
HSSFRow header = sheet.createRow(0);
header.createCell((short) 0).setCellValue("Court Name");
header.createCell((short) 1).setCellValue("Date");
header.createCell((short) 2).setCellValue("Hour");
header.createCell((short) 3).setCellValue("Player Name");
header.createCell((short) 4).setCellValue("Player Phone");
int rowNum = 1;
for (Reservation reservation : reservations) {
HSSFRow row = sheet.createRow(rowNum++);
row.createCell((short) 0).setCellValue(reservation.getCourtName());
row.createCell((short) 1).setCellValue(
dateFormat.format(reservation.getDate()));
row.createCell((short) 2).setCellValue(reservation.getHour());
row.createCell((short) 3).setCellValue(
reservation.getPlayer().getName());
row.createCell((short) 4).setCellValue(
reservation.getPlayer().getPhone());
}
}
}
ここでは、リソースセットファイルにExcelリソースの処理方法を追加する必要があります.(もちろん、他の方法でも登録できます.論理ビューとビューオブジェクトのマッピングを完了するだけでいいです.)reservationSummary.(class)=com.apress.springrecipes.court.web.view.ExcelReservationSummary
ここではhttp://localhost:7070/Spring3MVC/reservationSummary.xls?date=2011-07-31方式でエクセルビューリソースが必要です.もちろんこのリソースは地元にダウンロードされました.9.2)PDFビューを作成します.
ここでiTextライブラリのサポートを追加する必要があります.
<dependency>
<groupId>com.lowagie</groupId>
<artifactId>itext</artifactId>
<version>2.1.7</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
PDFビューの処理クラスを作成します.
public class PdfReservationSummary extends AbstractPdfView {
@SuppressWarnings({ "rawtypes", "unchecked" })
protected void buildPdfDocument(Map model, Document document,
PdfWriter writer, HttpServletRequest request,
HttpServletResponse response) throws Exception {
List<Reservation> reservations =
(List<Reservation>) model.get("reservations");
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Table table = new Table(5);
table.addCell("Court Name");
table.addCell("Date");
table.addCell("Hour");
table.addCell("Player Name");
table.addCell("Player Phone");
if(!reservations.isEmpty()) {
for (Reservation reservation : reservations) {
table.addCell(reservation.getCourtName());
table.addCell(dateFormat.format(reservation.getDate()));
table.addCell(Integer.toString(reservation.getHour()));
table.addCell(reservation.getPlayer().getName());
table.addCell(reservation.getPlayer().getPhone());
}
}
document.add(table);
}
}
ここではまだ資源集が必要です. ファイルにpdfリソースの処理方法を追加し、上のExcelマッピングと同じリソースセットに追加できません. は、同じリソースセットです. で同じキーの値にしてはいけません.reservationSummary.(class)=com.apress.springrecipes.court.web.view.ExcelReservationSummary
ここでは、http://localhost:7070/Spring3MVC/reservationSummary.pdf?date=2011-07-31によって、pdfビューリソースが必要とされるが、もちろん、このリソースはローカルにダウンロードされたものである. ----------------------------------------------------------
添付ファイルはシリーズ記事の例示コードで、eclipse 3.7.1で実行されます.
参考:
jyonのブログ:を選択します spring 3 MVC国際化支援の中国語文字化け」
Gary Markなどの書籍:「Spring Recipes」2 d