在Spring Portlet MVC架构中提供PDF

在Spring Portlet MVC架构中提供PDF,第1张

在Spring Portlet MVC架构中提供PDF

我在Servlet <-> Portlet映射上找不到任何东西。因此,我使用资源映射通过注释使用Spring Portlet
MVC发送pdf。参考:http :
//developers.sun.com/portalserver/reference/techart/jsr286/jsr286_2.html

在JSP中:

    <portlet:resourceURL var="PDFActionURL">        <portlet:param name="reportType" value="pdf" />        <portlet:param name="pdfNumber" value="${pdfNumber}" />    </portlet:resourceURL>    <input type="button" name="viewPDFButton" value="View PDF" onClick="self.location = '${PDFActionURL}';" />

在Portlet的Spring ApplicationContext.xml中,包括以下这些:

<context:annotation-config /><context:component-scan base-package="com.xxx" />

定义一个新的控制器:

import java.io.IOException;import java.io.OutputStream;import javax.portlet.PortletException;import javax.portlet.ResourceRequest;import javax.portlet.ResourceResponse;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.portlet.bind.annotation.ResourceMapping;import com.xxx.pdf.PDFBO;import com.xxx.PDFDTO;import com.liferay.portal.kernel.servlet.HttpHeaders;import com.liferay.portal.kernel.util.ParamUtil;@Controller("pdfController")@RequestMapping(value = "view")public class PDFController {    private final static Logger LOG = LoggerFactory.getLogger(PDFController.class);    //This is using Spring 3.0 Annotation Mapping (Spring Portlet MVC Architecture)    @ResourceMapping    public void serveResource(ResourceRequest resourceRequest, ResourceResponse res) throws PortletException, IOException {        LOG.info("In serveResource: ResourceURL");        String returnType = ParamUtil.getString(resourceRequest, "reportType");        String pdfNumber = ParamUtil.getString(resourceRequest, "pdfNumber");        LOG.info("returnType:" + returnType + " pdfNumber:" + pdfNumber);        String filename = "FILENAME_"+pdfNumber+".pdf";        // HttpServletRequest request =        // PortalUtil.getHttpServletRequest(resourceRequest);        if (returnType != null && returnType.equals("pdf")) { try {     //GET YOUR PDF HERE     //PDFBO pdfBO = new PDFBO();     //PDFDTO pdfContentVO = null;     //pdfContentVO = pdfBO.getPDF(pdfNumber);     res.setContentType("application/pdf");     res.addProperty(HttpHeaders.CACHE_CONTROL, "max-age=3600, must-revalidate");     res.addProperty(HttpHeaders.CONTENT_DISPOSITION,"filename="+ filename);     //Use this to directly download the file     //res.addProperty(HttpHeaders.CONTENT_DISPOSITION,"attachment");     OutputStream out = res.getPortletOutputStream();     //out.write(pdfContentVO.getPdfData());     out.write();     out.flush();     out.close(); } catch (Exception e) {     LOG.info("Error in " + getClass().getName() + "n" + e); }        }    }}

编辑:如果您使用的是Liferay的早期版本,这是一篇很棒的文章,可通过Liferay实现文件下载/服务-https:
//www.liferay.com/web/raymond.auge/blog/-/blogs/801426



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4909792.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-12
下一篇 2022-11-12

发表评论

登录后才能评论

评论列表(0条)

保存