【问题标题】:Spring XML View Resolver ConfigurationSpring XML 视图解析器配置
【发布时间】:2011-07-20 14:10:44
【问题描述】:

我正在尝试使用 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);
    }
}

最后在我的控制器中:

@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 - 渲染视图 [org.springframework.web.servlet.view.JstlView: name 'MyPDF';名称为“spring”的 DispatcherServlet 中的 URL [/WEB-INF/view/MyPDF.jsp]]

我错过了什么?

【问题讨论】:

    标签: java xml spring view resolver


    【解决方案1】:

    来自the Javadoc for InternalResourceViewResolver

    注意:链接 ViewResolver 时,InternalResourceViewResolver 总是需要放在最后,因为无论底层资源是否实际存在,它都会尝试解析任何视图名称。

    交换解析器的顺序。

    【讨论】:

    • 非常感谢您的帮助。我真的很感激。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-12
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    相关资源
    最近更新 更多