我有一个非常恼人的问题......我没有定义Controller处理程序映射器,因此我使用的是DefaultAnnotationHandlerMapping
类。我的问题似乎与Controller bean名称映射到Controller类有关,例如。
对调度员的传入请求 - > index.htm的
使用以下Controller类:
@Controller
public class IndexController {
@RequestMapping(value = "/index.htm", method = RequestMethod.GET)
public String loginForm(ModelMap model) {
return "index";
}
}
应将index.htm映射到indexController bean,然后映射到IndexController类。我可以从日志中看到Spring已经使用容器注册了bean但是我收到以下错误:
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [xxx.controller.IndexController]
我确定该类存在(因为bean名称是从它派生的)。
奇怪的是,如果我将控制器命名为与bean名称相同(例如indexController),一切都很好!! (显然我不希望我的班级有一个小写的第一个字母!!)
请注意我在dispatcher-servlet.xml中使用了以下内容:
<mvc:annotation-driven />
<context:component-scan base-package="xxx" />
JLove
答案 0 :(得分:2)
此错误通常表示您的类未捆绑在war文件中。解压缩war文件并检查您的课程是否正确包含在内。
我怀疑你在某些时候成功捆绑了“indexController.class”,但之前的打包尝试失败了。您尚未说明如何打包应用程序,如果您正在使用其中一个,请检查Maven / Ant配置。注意在IDE和构建脚本之间共享构建目录,因为它们偶尔会相互冲突。
答案 1 :(得分:-1)
我建议你下载STS并创建新的Spring MVC项目模板,看看Spring 3 MVC是如何工作的。