【问题标题】:XML view with Spring MVC使用 Spring MVC 的 XML 视图
【发布时间】:2011-06-11 02:56:55
【问题描述】:

这是一个非常新手的问题: 如何使用 Spring MVC 版本 3.0.3.RELEASE 输出 XML? 我目前正在将 Tiles2 与 JSTL 一起使用,当我想输出 PDF 时,我只是创建了一个扩展 AbstractPdfView 的视图渲染器,如下所示:

public class PDFOutput extends AbstractPdfView {

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

在这种情况下,我应该扩展哪个 AbstractView 类来创建 XML 文档?

提前致谢,

【问题讨论】:

    标签: java xml spring spring-mvc


    【解决方案1】:

    扩展 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()
       }
    }
    

    【讨论】:

    • 谢谢!我会试试这个解决方案!
    • David,我在使用这种方法时遇到了一些问题,当我添加一些带有文字 UTF-8 字符串(例如“áéíóú”)的节点时,它会以 ISO 编码并像这样传递给浏览器,尽管文档编码定义和http响应的编码..这是为什么?
    • 你检查过Java源文件本身的编码吗?您是否使用默认为平台编码并具有允许您强制使用 UTF-8 的重载版本的 XML 序列化方法或构造函数?
    • 文件编码正确,我在这里解决了这个问题:stackoverflow.com/questions/12606462/…Thanks David
    【解决方案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());
    }
    

    【讨论】:

      猜你喜欢
      • 2013-12-18
      • 2013-01-05
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      相关资源
      最近更新 更多