発生した時のログとソースコード
このように、起動時に出現するエラーです。
$ ./gradlew bootRun
Caused by: java.lang.IllegalStateException: Ambiguous mapping. Cannot map 'indexController' method
この時のソースコードはこちらです。
@Controller
@RequestMapping("/")
public class IndexController {
@GetMapping("/login")
public String index(HttpSession session)
{
// トップページを表示
return "index";
}
@GetMapping("/login")
public String manager(HttpSession session)
{
// セッションにログイン時刻をセット
IndexControllerHelper.setLoginDatetime(session);
// トップページを表示
return "index";
}
}
"/login"に対するメソッドがindexとmanagerという2つ存在しています。
Springframeworkが、どちらに対して/loginを割り当てれば良いか判断できないため、エラーとなります。
Ambiguous mapping. Cannot map 'xxxController' method とは?
Ambiguous とは「あいまいな」という意味です。
つまり、URL定義があいまいなので、xxxControllerのメソッドをURLにマップできません。
という意味になります。
URL定義があいまいというのは、1つに決められない、つまり重複があるという意味です。
解決策としては、xxxControllerで使用している、@RequestMapping/@GetMapping/@PostMapping/@DeleteMappingのURL指定が重複していないか見直してください。
xxxController内だけではなく、その他のコントローラーのURL定義とも重複していても、このエラーが発生します。