Я занимаюсь разработкой веб-приложения с использованием среды Spring MVC (v3).
В настоящее время у меня определено несколько классов контроллеров - я создал их, расширив MultiActionController, а затем в своем веб-конфигурации mvc XML определил bean-компоненты и сопоставления URL-адресов:
QuestionController.java:
public class QuestionController extends MultiActionController implements InitializingBean
{
webmvc-config.xml
<bean id="questionController" class="com.tmm.enterprise.microblog.controller.QuestionController"></bean>
...
<bean id="fullHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="alwaysUseFullPath" value="true" />
<property name="mappings">
<props>
<prop key="/question/**">questionController</prop>
</props>
</property>
</bean>
Это прекрасно работает, я определяю методы в моем контроллере, совпадающие с вызываемыми URL, и все работает правильно (например, у меня есть метод list(..)
, который корректно выполняется, когда я перехожу к /question/list
).
Однако для этого конкретного контроллера я хочу использовать опцию @PathVariable
в Spring, чтобы разрешить переменные URL-адреса (например, я хочу details(..)
метод, который при вызове /question/detail/9999
- где 9999
идентификатор вопроса, метод выполняется). Я попытался использовать это следующим образом:
QuestionController.java:
@RequestMapping("/detail/{questionId}")
public ModelAndView detail(@PathVariable("questionId") long questionId, HttpServletRequest request, HttpServletResponse response) throws Exception{
Тем не менее, я получаю сообщение об ошибке при запуске выше и получаю:
Не удалось найти @PathVariable
[questionId
] в @RequestMapping
Кто-нибудь сталкивался с этим раньше? Можно ли смешивать аннотации RequestMapping
с существующим отображением URL, настроенным для XML?