您 可以继承 org.springframework.web.servlet.view.AbstractView 自订自己的 View 类别,以 产生所需的 View 层展示技术,这边以产生 Pdf 的结果页面为例,您可以直接继承 org.springframework.web.servlet.view.document.AbstractPdfView 类别,并重新定义它的 buildPdfDocument()方法,例如:
package onlyfun.caterpillar; import com.lowagie.text.Document; import com.lowagie.text.Paragraph; import com.lowagie.text.pdf.PdfWriter; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.view.document.AbstractPdfView; public class CustomPdfView extends AbstractPdfView { protected void buildPdfDocument( Map model, Document document, PdfWriter writer, HttpServletRequest request, HttpServletResponse response) throws Exception { String header = (String) model.get("header"); Paragraph headerParagraph =new Paragraph(header); headerParagraph.font().setSize(20); document.add(headerParagraph); String content = (String) model.get("content"); Paragraph contentParagraph =new Paragraph(content); document.add(contentParagraph); String copyright = (String) model.get("copyright"); Paragraph copyrightParagraph =new Paragraph(copyright); copyrightParagraph.setAlignment( Paragraph.ALIGN_BOTTOM); document.add(copyrightParagraph); } }
假设在您的 Controller 中提供了 Model 资料物件:
package onlyfun.caterpillar; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class PdfController implements Controller { public ModelAndView handleRequest( HttpServletRequest req, HttpServletResponse res) throws Exception { Map model = new HashMap(); model.put("header", "Pdf View Test"); model.put("content", "This is content for pdf view test."); model.put("copyright", "caterpillar.onlyfun.net"); return new ModelAndView("customPdfView", model); } }
而在 Bean 定义档中是这么设计的:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN""http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="viewResolver" class="org.springframework.web.servlet. → view.BeanNameViewResolver"/> <bean id="customPdfView" class="onlyfun.caterpillar.CustomPdfView"/> <bean name="/pdf.do" class="onlyfun.caterpillar.PdfController"/> </beans>则接上/pdf.do 时,会显示 pdf 的结果画面。