Spring mvc: правила сопоставления путей - PullRequest
7 голосов
/ 02 августа 2011

Мне нужно отобразить перехватчик для всех методов в аннотированном контроллере с @RequestMapping (value = "/ client")

В отображении у меня есть

<mvc:interceptor>
   <mvc:mapping path="/app/client/*"/>
   <bean class="com.cci.isa.web.CIPClientHandleInterceptor" />
</mvc:interceptor>

Этот перехватчик идеально называется для URL, таких как:
1. http://host/app/client/clientUpdateForm?clientId=305

Но не требует таких URL, как:
2. http://host/app/client/clientUpdateForm/clientId_305 (с косой чертой после имени метода)

Как это называется для второго варианта?

Большое спасибо.

Ответы [ 5 ]

5 голосов
/ 14 июля 2012

Этот вопрос слишком старый, но, возможно, это кому-нибудь поможет.

Вы должны попробовать удалить /app, я думаю, что в этом нет необходимости, и, возможно, это вызывает проблему.

<mvc:mapping path="/client/**"/>
1 голос
/ 17 августа 2012

Если ваш контроллер с

@RequestMapping(value = "/client")

Попробуйте

<mvc:mapping path="/client**"/>
1 голос
/ 03 августа 2011

Я думаю, что это достигнет того, что вы хотели бы:

<mvc:mapping path="/app/client/**/*"/>

'/ **' предлагает любое количество каталогов.Когда это используется вместе с '/ *', у вас есть что-то, что смотрит на произвольную глубину папки, с произвольным именем файла.

0 голосов
/ 26 июля 2017

Моя проблема заключалась в том, что мы использовали пользовательский RequestMappingHandlerMapping

<bean name="handlerMapping" 
class="utils.web.versioning.MobileVersionRewritingMappingHandler">
    <property name="order" value="0"/> 
    <property name="interceptors"> 
        <list> 
          ...
        </list> 
    </property>  
</bean>

Конфигурация XML или кода для CORS или любые другие свойства MVC не влияют на сопоставления пользовательских обработчиков.Я мог бы указать конфигурацию cors для сопоставления пользовательских обработчиков, но я предпочитаю удалить устаревшую конфигурацию и использовать ее для настройки перехватчиков:

 <mvc:interceptors>
  ...
 </mvc:interceptors>

Теперь cors работает, и я использую глобальную конфигурацию cors XML.

0 голосов
/ 05 августа 2011

Попробуйте приведенное выше предложение, но измените аннотацию на

@RequestMapping(value = "/client*")

Хотя я бы использовал два метода для каждого из двух шаблонов URI и передал их одному общему методу для выполнения "вещи" ...

@RequestMapping(value = "/app/client/clientUpdateFormat/{clientId}", method = RequestMethod.GET)
 public String doItOne(@PathVariable("clientId") String clientId) {
    doItCommon(clientId);

и

@RequestMapping(value = "/app/client/clientUpdateFormat", method = RequestMethod.GET)
 public String doItTwo(@RequestParam("clientId")  String clientId) {
    doItCommon(clientId);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...