UrlFilenameViewController не возвращает View (Spring-MVC) - PullRequest
1 голос
/ 31 июля 2009

Согласно Spring Framework API

Назначение UrlFilenameViewController:

Преобразует виртуальный путь URL в имя представления и возвращает это представление.

Если я запрашиваю /info.xhtml, его логическим именем представления будет информация

См. UrlFilenameViewController Документация

И web.xml, и контроллер отображаются в соответствии с

/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8">
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>smac</display-name>
    <servlet>
        <servlet-name>controller</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>controller</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>
</web-app>

/WEB-INF/controller-servlet.xml
<?xml version="1.0" encoding="UTF-8">
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
    <bean class="org.springframework.web.servlet.view.InternalViewResolver">
        <property name="prefix" value="/WEB-INF/output/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>
</beans>

Мое приложение smac развертывается нормально.

Итак, если я запрашиваю http://127.0.0.1:8080/smac/info.xhtml, Spring-MVC должен вернуть /WEB-INF/output/info.jsp. Но я видел в консоли следующее:

Не найдено сопоставление для HTTP-запроса с URI [/smac/info.xhtml] в DispatcherServlet с именем 'controller'

Может ли кто-нибудь мне помочь?

С уважением,

1 Ответ

2 голосов
/ 31 июля 2009

Вам необходимо настроить HandlerMapping . Значение по умолчанию - BeanNameUrlHandlerMapping, которое будет делать то, что вы хотите, только если вы связываете свой контроллерный компонент под именем, соответствующим вашему URI. Вы, вероятно, хотите вместо SimpleUrlHandlerMapping:

<bean name="myController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <value>
            /**/*.xhtml=myController
        </value>
    </property>
</bean>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...