从Java下载JSP文件中的pdf文件

时间:2015-12-10 11:13:28

标签: spring

我想以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页面中显示的相同。这就是我的页面的样子,以防您感兴趣:my page about hamburgers

1 个答案:

答案 0 :(得分:0)

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

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