2010-10-27 4 views
0

У меня проблема с перенастройкой контроллера весов/запроса. В web.xml я определил 2 диспетчерских сервлеты, отображающих следующие пути запроса:RequestMapping для контроллеров для разных сервлетов

  1. Servlet:/патха/*
  2. Servlet/pathB/*

Все мои контроллеры определены в пакете com.myproject.controllers, поэтому оба контроллера обслуживают пути в/pathA/* и/pathB/*. Я выполняю компонентное сканирование в обоих моих сервлетах. Как мне нужно установить ReuestMapping аннотации для следующего контроллера:

@Controller 
public class MyController { 

    // /pathA 
    public void action1() { 
    } 

    // /pathA/action2 
    public void action2() { 
    } 
} 

Я действительно запутаться здесь, я попытался так много разных вещей, я надеюсь, что вы можете мне помочь!

С уважением, Генрих

ответ

0

Если вам действительно нужно использовать несколько DispatcherServlet, возможно, лучший подход - разместить их контроллеры в отдельных пакетах и ​​ограничить проверку компонентов каждого сервлета на свой собственный пакет.

Если вы не можете сделать это по какой-то причине, вы можете настроить сервлеты следующим образом:

<bean class = "org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
    <property name = "alwaysUseFullPath" value = "true" /> 
</bean> 

В этом случае вы можете использовать сервлет пути в @RequestMapping, как показал стас.

+0

Ах! Это именно то, что я искал. Я видел это свойство alwaysUseFullPath уже в SimpleurlhandlerMapping, но не знал, что его можно использовать, как показано. – Erik

0

попробовать смт как этот

@RequestMapping(method = RequestMethod.GET, value = "/pathA") 
@RequestMapping(method = RequestMethod.GET, value = "/pathA/bla-bla") 

, если это не помогло бы там какой-то вариант с urlrewriters.

+0

Хорошо, возможно, это поможет слить все мои сервлеты в сингл с requestPath "/ *"? Поэтому я мог бы дать упомянутые вами пути, и он должен работать, не так ли? – Erik

+0

@Heinrich: сколько у вас сервлетов? –

+0

В настоящее время 5, но 4 из них - сервлеты Spring Dispatcher. Я не уверен, что это хорошая практика весной? Больше. Или, наоборот, просто судивируют пробелы запроса – Erik