您
可以繼承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的結果畫面。
|