java - Spring XML View 解析器配置

标签 java xml spring view resolver

我正在尝试使用 spring-mvc 将一些模型数据输出到 pdf。它不起作用,我想知道是否有人可以提供一些建议。

我有一个包含以下内容的 spring-servlet.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>

在 spring-pdf-views.xml 文件中我有这个:

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

这是我的 MyPDFView 类:

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);
    }
}

最后在我的 Controller 中我有:

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

我在输出中看到的问题是它永远不会到达 xmlViewResolver。它试图将 MyPDF 呈现为 JSTL View 。这是来 self 的日志:

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'

我错过了什么?

最佳答案

来自 the Javadoc for InternalResourceViewResolver :

Note: When chaining ViewResolvers, an InternalResourceViewResolver always needs to be last, as it will attempt to resolve any view name, no matter whether the underlying resource actually exists.

交换解析器的顺序。

关于java - Spring XML View 解析器配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5393458/

相关文章:

java - SQL:长比较或字符串,哪个更快

Java:就地对 ArrayList 进行排序

xml - XHTML 1.1 的 W3C XML 架构在哪里?

java - 将 Java 类结构转换为 Python 类

带有 SockJs 的 Spring Websocket 从 XHR 流切换到 Websocket

java - 父类(super class)的私有(private)方法在子类引用上执行

java - Hibernate ManyToMany删除的对象会被级联重新保存

c# - 如何区分不同的值(value)观?

java - Spring 集成 : SMTP server

java - Spring Boot 应用程序在 AWS 上关闭