2015-12-10 89 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來實現它。