На самом деле я думал, что пытаюсь сделать что-то действительно простое. ControllerClassNameHandlerMapping великолепно звучал для создания небольшого весеннего веб-приложения, использующего очень скудную конфигурацию. Просто аннотируйте контроллер с помощью @Controller, сделайте так, чтобы он расширял AbstractController, и конфигурации не нужно больше, чем эта
<context:component-scan base-package="test.mypackage.controller" />
<bean id="urlMapping" class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
чтобы разрешить мои запросы и сопоставить их с моими контроллерами. Я сопоставил сервлет с "* .spring" и позвонил
<approot>/hello.spring
Все, что я когда-либо получаю, это ошибка, утверждающая, что сопоставление не найдено. Однако, если я расширяю MultiActionController и делаю что-то вроде
<approot>/hello/hello.spring
это работает. Что меня как-то раздражает, так как я подумал бы, что если это работает, то почему я не попробовал в первый раз? У кого-нибудь есть идеи? Два контроллера, которые я использовал, выглядели так:
@Controller
public class HelloController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView("hello");
modelAndView.addObject("message", "Hello World!");
return modelAndView;
}
}
и
@Controller
public class HelloController extends MultiActionController {
public ModelAndView hello(HttpServletRequest request, HttpServletResponse response) throws Exception {
ModelAndView modelAndView = new ModelAndView("hello");
modelAndView.addObject("message", "Hello World!");
return modelAndView;
}
}