我想以PDF格式下载我的一个JSP页面。例如,这是我返回JSP页面的函数:
@RequestMapping(value = "/cart", method = RequestMethod.GET)
public String cart(HttpSession httpSession ,final Model model, RedirectAttributes redirectAttributes){
StudentData studentData =(StudentData)httpSession.getAttribute("student");
if(studentData ==null){
redirectAttributes.addFlashAttribute("isFromCartFlag", Boolean.TRUE);
return REDIRECT_PREFIX + "/login" ;
}
final List<ProductData> cartDataFromDb = listofProducts.retrieveCartEntriesFromDb(studentData.getName());
List<ProductData> sessionCart = (List<ProductData>) httpSession.getAttribute("sessionCart");
if (sessionCart != null) {
for (ProductData sessionCartEntryData : sessionCart) {
for (ProductData cartEntryData : cartDataFromDb) {
if(cartEntryData.getProductName().equalsIgnoreCase(sessionCartEntryData.getProductName())){
int quantityOfItem = cartEntryData.getQuantity()+sessionCartEntryData.getQuantity();
sessionCartEntryData.setQuantity(quantityOfItem);
}
}
listofProducts.insertCartEntriesIntoDb(studentData.getName(),sessionCartEntryData.getProductName(),sessionCartEntryData.getQuantity());
}
}
final List<ProductData> cartData = listofProducts.retrieveCartEntriesFromDb(studentData.getName());
List<ProductData> productDataListForCart = new ArrayList<ProductData>();
for (ProductData cartDataEntry : cartData) {
ProductData productData = listofProducts.displayProductDetailsFromProductId(cartDataEntry.getProductName());
if(productData.getProductName().equalsIgnoreCase(cartDataEntry.getProductName())){
cartDataEntry.setBasePrice(productData.getBasePrice());
cartDataEntry.setDiscout(productData.getDiscout());
cartDataEntry.setProductImagePath(productData.getProductImagePath());
productDataListForCart.add(cartDataEntry);
}
}
model.addAttribute("listOfProducts", productDataListForCart);
model.addAttribute("studentData", httpSession.getAttribute("student"));
if(productDataListForCart.isEmpty()){
model.addAttribute("isCartEmptyFlag", Boolean.TRUE);
}
return "CartPage";
}
此功能显示cartPage
,我想在此购物车页面上显示链接,这样,如果我点击该链接,获取页面将作为PDF文件下载,其格式与JSP页面中显示的相同。这就是我的页面的样子,以防您感兴趣:
答案 0 :(得分:0)
Spring Web MVC with PDF View Example概述了一种方法。总之,您实现了一个扩展Spring AbstractView的bean。此视图接受来自Spring MVC的模型,然后您可以使用您选择的API来呈现PDF。本文使用ResourceBundleViewResolver将视图名称映射到bean,但我个人更喜欢使用BeanNameViewResolver。
Spring确实提供了一个AbstractPdfView类,但使用旧版本的iText来实现它。