0

我有一个非常烦人的问题......我没有定义控制器处理程序映射器,因此我正在使用DefaultAnnotationHandlerMapping该类。我的问题似乎与控制器 bean 名称映射到控制器类有关,例如

对调度程序的传入请求 -> index.htm

使用以下控制器类:

@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" />

4

2 回答 2

2

这个错误通常意味着你的类没有被捆绑在war文件中。解压缩war文件并检查您的类是否正确包含。

我怀疑您在某个时候成功捆绑了“indexController.class”,但之前的打包尝试失败了。你还没有说明你是如何打包你的应用程序的,如果你正在使用其中之一,请检查你的 Maven/Ant 配置。请注意在 IDE 和构建脚本之间共享构建目录,因为它们有时会相互冲突。

于 2013-03-15T12:04:46.997 回答
-1

我建议你下载STS并创建新的 Spring MVC 项目模板,看看 Spring 3 MVC 是如何工作的。

于 2013-03-15T11:56:42.147 回答