我在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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)