0

本当に厄介な問題があります...コントローラーハンドラーマッパーを定義していないため、DefaultAnnotationHandlerMappingクラスを使用しています。私の問題は、ControllerクラスへのController 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" />

Jラブ

4

2 に答える 2

2

このエラーは通常、クラスが war ファイルにバンドルされていないことを意味します。war ファイルを解凍し、クラスが正しく含まれていることを確認します。

ある時点で「indexController.class」のバンドルに成功したと思われますが、以前のパッケージ化の試みは失敗しました。アプリケーションのパッケージ化方法を示していません。これらのいずれかを使用している場合は、Maven/Ant 構成を確認してください。IDE とビルド スクリプトの間でビルド ディレクトリを共有しないように注意してください。相互に競合する場合があるためです。

于 2013-03-15T12:04:46.997 に答える
-1

Spring 3 MVC がどのように機能するかを確認するには、STSをダウンロードして新しい Spring MVC プロジェクト テンプレートを作成することをお勧めします。

于 2013-03-15T11:56:42.147 に答える