<context:component-scan base-package="test.mypackage.controller" />
<bean id="urlMapping" class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" />
解决我的请求并将它们映射到我的控制器。我已将servlet映射到“* .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;
}
}
答案 0 :(得分:2)
您不应在@Controller
延伸的同时使用AbstractController
。做一个或另一个。
此外,@Controller
应与@RequestMapping
注释一起使用。
如果你想要精简配置,那就把它放在配置文件中:
<context:component-scan base-package="test.mypackage.controller" />
并使用此课程:
@Controller
public class HelloController {
@RequestMapping("/hello")
public String handle(ModelMap model) {
model.addAttribute("message", "Hello World!");
return "hello";
}
}
实际上,你可以完全忽略返回值,Spring应该从请求路径推断出视图名称“hello”,但为了清楚起见,我将其留下了。
答案 1 :(得分:2)
从Spring 3.0开始,不推荐使用AbstractController
类及其别名(SimpleFormController,AbstractFormController等)。所以不要再使用它们了。基于注释的@MVC模型功能强大且灵活。