определение преобразователя представления в Spring 3.1 - PullRequest
4 голосов
/ 21 мая 2011

Я создаю новый проект на основе 3.1 M1 в качестве тестового примера. У меня есть web.xml, настроенный для использования DispatcherServlet с contextClass org.springframework.web.context.support.Annotation ConfigWebApplicationContext и contextConfigLocation of domain.ApplicationConfiguration.

Однако, когда метод из одного из моих @Controller аннотировал классы с попытками вернуть ModelAndView с именем представления «test» I, он ищет метод в том же классе контроллера с @RequestMapping «test», когда Я хотел бы, чтобы он искал jsp с именем "test.jsp" в каталоге WebContent, и похоже, что никакой видоискатель никогда не создается. Я попытался объявить преобразователь представления в классе ApplicationConfiguration, но он, кажется, игнорируется. Я всегда получаю сообщение журнала что-то вроде: ВНИМАНИЕ: Не найдено сопоставление для HTTP-запроса с URI [/ test / foo / test] в DispatcherServlet с именем dispatcher '

Как мне настроить распознаватель представлений в 3.1?

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>domain.test.configuration.ApplicationConfiguration</param-value>
</context-param>

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>domain.test</param-value>
</init-param>
</servlet>

<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

<display-name>test</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

Какие другие части конфигурации были бы полезны?

Ответы [ 3 ]

2 голосов
/ 21 мая 2011

Из документации обычным способом определения JSP viewResolver является:

<bean id="viewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver">
    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>
1 голос
/ 25 июля 2011
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>

Не указывайте шаблон URL как /*.Упомяните шаблон URL как *.htm.Конечно, это будет работать.

1 голос
/ 25 мая 2011

Он начал работать, когда я изменил тег с: http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id = "WebApp_ID" version = "3.0">

на: http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version = "2.5">

Я знаю, что в Milestone 2 должна была появиться поддержка сервлета 3.0, я просто не ожидал такого рода режима отказа для его упреждающего объявления.Я не получил никаких ошибок, он просто проигнорировал все мои сопоставления контроллера.

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