2011-01-18 4 views
0

이것은 정말 새내기 질문입니다. 스프링 MVC 버전 3.0.3을 사용하여 XML을 출력하려면 어떻게해야합니까? 나는 현재 JSTL과 Tiles2를 사용하고, 나는 출력 PDF, 즉를 할 때, 난 그냥 다음과 같이 AbstractPdfView를 확장하는보기 렌더러 생성 :이 경우스프링 MVC가있는 XML 뷰

public class PDFOutput extends AbstractPdfView { 

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

를, 내가 무슨 추상보기 클래스를 확장한다 XML 문서를 만드시겠습니까?

미리 감사드립니다.

답변

5

아마도 AbstractView 자체를 확장하는 것이 가장 간단 할 것입니다. 우리는 같은 것을 할 :

public class XMLView extends AbstractView { 

    private final Document _xml; 

    public XMLView(final Document xml) { 
    _xml = xml; 
    } 

    @Override 
    protected void renderMergedOutputModel(final Map<String, Object> model, final HttpServletRequest request, final HttpServletResponse response) throws Exception { 
    response.setContentType("application/xml"); 
    response.setCharacterEncoding("UTF-8"); 
    // do stuff to serialize _xml to response.getOutputStream() 
    } 
} 
+0

감사합니다! 나는 그 해결책을 시도 할 것이다! –

+0

David,이 접근 방식에 문제가 있습니다. "ééíúú"와 같은 리터럴 UTF-8 문자열을 가진 노드를 추가하면 문서 인코딩 정의 및 http 응답의 인코딩에도 불구하고 ISO로 인코딩되고 브라우저에 전달됩니다. 인코딩 왜 .. 왜? –

+0

Java 소스 파일 자체의 인코딩을 확인 했습니까? 플랫폼 인코딩을 기본값으로하는 XML 직렬화 메서드 또는 생성자를 사용하고 있으며 UTF-8을 강제 적용 할 수있는 오버로드 된 버전이 있습니까? –

2

감사를 David North에, 결과 코드는 다음과 같다 DOM4J를 사용하여 :

public class XMLView extends AbstractView { 

    @Override 
    protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { 

    // set headers 
    response.setContentType("application/xml"); 
    response.setCharacterEncoding("UTF-8"); 

    // construct XML document 

    // output XML as String 
    response.getOutputStream().print(doc.asXML()); 
} 
관련 문제