Конфигурация Spring XML View Resolver - PullRequest
3 голосов
/ 22 марта 2011

Я пытаюсь вывести некоторые данные модели в pdf, используя spring-mvc.Это не работает, и мне было интересно, если кто-то может дать какой-то совет.

У меня есть файл 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';URL [/WEB-INF/view/MyPDF.jsp]] в DispatcherServlet с именем 'spring'

Что мне не хватает?

1 Ответ

5 голосов
/ 22 марта 2011

С Javadoc для InternalResourceViewResolver :

Примечание: при объединении в цепочку ViewResolvers всегда должен быть последний InternalResourceViewResolver, поскольку он будет пытаться разрешить любое имя представления, независимо от того,существует ли базовый ресурс на самом деле.

Поменяйте местами порядок разрешения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...