2011-03-22 6 views
3

spring-mvc를 사용하여 pdf에 일부 모델 데이터를 출력하려고합니다. 그것은 작동하지 않으며 누군가가 약간 통보를 제안 할 수 있던 경우에 나는 생각해보고 있었다. 스프링 PDF-views.xml 파일에서스프링 XML보기 리졸버 구성

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="order" value="1"/> 
    <property name="prefix" value="/WEB-INF/view/"/> 
    <property name="suffix" value=".jsp"/> 
</bean> 

<bean id="xmlViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"> 
    <property name="order" value="2"/> 
    <property name="location"> 
     <value>/WEB-INF/spring-pdf-views.xml</value> 
    </property> 
</bean> 

내가 가진이 :

<bean id="MyPDF" class="com.example.MyPDFView"/> 

이 내 MyPDFView됩니다

나는 다음을 포함하는 봄-servlet.xml 파일을 클래스 :

public class MyPDFView extends AbstractPdfView { 

@Override 
protected void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer, 
     HttpServletRequest request, HttpServletResponse response) throws Exception { 

    @SuppressWarnings("unchecked") 
    Map<String, String> data = (Map<String, String>) model.get("modelData"); 

    Table table = new Table(2); 
    table.addCell("Date"); 
    table.addCell("Name"); 
    table.addCell(data.get("modelData.dateValue")); 
    table.addCell(data.get("modelData.nameValue")); 

    document.add(table); 
} 

}

마지막으로 내 컨트롤러에서 나는이 :

@RequestMapping(value="/pdfInformation", method=RequestMethod.POST) 
public ModelAndView showPDF(ModelMap model, PDFInfo pdfInfo, BindingResult result) { 
     return new ModelAndView("MyPDF", model); 

}

내가 출력에보고하고 문제는 그것이 xmlViewResolver에 도달하지 않을 것입니다. MyPDF를 JSTL보기로 렌더링하려고합니다. 이것은 내 로그에서입니다 :

org.springframework.web.servlet.DispatcherServlet - Rendering view [org.springframework.web.servlet.view.JstlView: name 'MyPDF'; URL [/WEB-INF/view/MyPDF.jsp]] in DispatcherServlet with name 'spring' 

도와주세요 someonme와 제가 놓친 거지 알려 수 있습니다. 미리 감사드립니다. the Javadoc for InternalResourceViewResolver에서

답변

5

:

참고 : ViewResolvers를 체인 때 상관없이 기본 자원이 실제로 존재하는지, 어떤 뷰 이름을 확인하지하려고 시도와 같은 것은 InternalResourceViewResolver는 항상 마지막이 될 필요가있다.

해결 프로그램의 순서를 교체하십시오.

+0

도움을 주셔서 대단히 감사합니다. 정말 감사. – blong824

관련 문제