Я покажу свой подход к этому, так как мне нужно было обрабатывать запросы к главному представлению с одним контроллером, а запросы к всплывающему окну, являющемуся частью портлета с другим контроллером, используя Spring MVC 3.0.5.
Основной контроллер будет вызываться, если в запросе отсутствует параметр с именем view, и всплывающий контроллер, если параметр view имеет значение «popup». Вот весенняя конфигурация приложения с портлетами и аннотации, установленные на контроллерах:
Конфигурация Spring: app-portlet.xml
Важно! Обратите внимание, что пакет является org.springframework.web. portlet .mvc.annotation, и не используйте вместо вместо сопоставления обработчика, так как он будет регистрировать сопоставления обработчика сервлета.
<!-- Scan the desired package for annotations -->
<context:component-scan
base-package="com.company.project.myportlet" />
<!-- Handler mappings for annotation based controllers -->
<bean
class="org.springframework.web.portlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean
class="org.springframework.web.portlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>
Главный контроллер
package com.company.project.myportlet;
@Controller
@RequestMapping(value="VIEW",params="!view")
public class MainPageController {
//...
}
Всплывающий контроллер
package com.company.project.myportlet;
@Controller
@RequestMapping(value="VIEW",params="view=popup")
public class PopupController {
//...
}