您 可以继承 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 的结果画面。