Spring XML View解析器配置 [英] Spring XML View Resolver Configuration

查看:110
本文介绍了Spring XML View解析器配置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am trying to output some model data to a pdf using spring-mvc. It is not working and I was wondering if someone could offer some advice.

我有一个spring-servlet.xml文件,其中包含以下内容:

I have a spring-servlet.xml file that includes the following:

<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文件中,我具有以下内容:

In the spring-pdf-views.xml file I have this:

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

这是我的MyPDFView类:

This is my MyPDFView class:

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

最后在我的控制器中,我拥有:

Finally in my controller I have:

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

我在输出中看到的问题是它永远不会到达xmlViewResolver.它试图将MyPDF呈现为JSTL视图.这是从我的日志中获得的:

The problem I am seeing in the output is that it never gets to the xmlViewResolver. It is trying to render the MyPDF as a JSTL View. This is from my logs:

org.springframework.web.servlet.DispatcherServlet-呈现视图[org.springframework.web.servlet.view.JstlView:名称为'MyPDF';名为'spring'的DispatcherServlet中的URL [/WEB-INF/view/MyPDF.jsp]]

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'

我想念什么?

推荐答案

来自InternalResourceViewResolver的Javadoc :

注意:当链接ViewResolvers时,一个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.

交换您的解析器顺序.

这篇关于Spring XML View解析器配置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆