Как использовать подстановочные знаки в URL-адресах сопоставления сервлетов Spring MVC? - PullRequest
2 голосов
/ 13 сентября 2011

В моем web.xml настроен контроллер:

<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>/console/index</url-pattern>
</servlet-mapping>

И соответствующий бин определен в controller-servlet.xml:

<bean name="/console/index" class="com.package.OverviewController"/>

, который работает правильно- когда я получаю "/ appName / console / index", он ведет себя как я ожидаю.Но когда я изменяю web.xml на это:

<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>/console/*</url-pattern>
</servlet-mapping>

Он больше не работает, предоставляя мне следующее исключение:

WARN (org.springframework.web.servlet.PageNotFound) - No mapping for [/appName/console/index] in DispatcherServlet with name 'controller' 

Поэтому мой вопрос заключается в том, как использовать подстановочные знаки вотображения сервлетов, так что разные URL-адреса проходят через один DispatcherServlet, но могут переходить к одному из нескольких компонентов контроллера?

К вашему сведению: я застрял на Spring 2.0, поскольку это установленное приложение, используемое в правительстве.

1 Ответ

4 голосов
/ 13 сентября 2011

Когда вы используете подстановочные знаки в <url-pattern>, имена контроллеров по умолчанию соответствуют подстановочной части шаблона.

Таким образом, вы можете переименовать контроллер на /index или установить для свойства alwaysUseFullPath вашего HandlerMapping значение true.

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