2015-12-10 122 views
0

我想将我的一个JSP页面下载为PDF。例如,这是我的函数返回到JSP页面:从Java中的JSP文件中下载pdf文件

@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,我想显示此购物车页面上的链接,这样,如果我点击该链接的get页面下载为上一个与JSP页面中显示的格式相同的PDF文件。这就是我的页面的样子,如果您有兴趣:my page about hamburgers

+0

它在这里概述的基本过程:http://stackoverflow.com/a/27533212/1356423 –

回答

0

Spring Web MVC with PDF View Example概述了一种方法。总之,你实现了一个扩展Spring的AbstractView的bean。该视图接受来自Spring MVC的模型,然后您可以使用您选择的API来渲染PDF。本文使用ResourceBundleViewResolver将视图名称映射到一个bean,但我个人更喜欢使用BeanNameViewResolver。

Spring确实提供了AbstractPdfView类,但是使用ann版本的iText来实现它。