私は現在、既存のプロジェクト (Java バージョン: 1.7.0、Spring MVC フレームワーク バージョン: 3.1.4 を使用) に取り組んでおりPathVariable、特定のコントローラー クラスの 1 つの URI でのみこの問題を特定できました。すでにこのエラーに直面している人はいますか?どのように修正/解決しましたか? ありがとう!
コード(Java コントローラー クラスの抽出部分):
@RequestMapping(value = "/site/apps/{question}.json", method = RequestMethod.GET)
public @ResponseBody ServiceResponse moreUsers(
@PathVariable("question") final Question question,
@RequestParam(value = "sort", required = false) final String sort,
final HttpServletRequest request, final Model model)
Tomcat ログ (catalina.out ファイル) のエラー出力:
ERROR Error executing request: /site/apps/52440.json
org.springframework.web.bind.annotation.support.HandlerMethodInvocationException: Failed to invoke handler method [public com.project.infrastructure.service.ServiceResponse com.project.plugins.controllers.SiteAppController.moreUsers(com.project.models.node.Question,java.lang.String,javax.servlet.http.HttpServletRequest,org.springframework.ui.Model)]; nested exception is java.lang.IllegalStateException: **Could not find @PathVariable [question] in @RequestMapping**
すでに調査したこと:
- 仕様ドキュメント (mvc-ann-requestmapping-uri-templates) に従って、PathVariable アノテーションの春の規則に従いました。
- Java プロジェクトには他に同様のパスが見つかりませんでした。(/site/apps/{question-id}) 内で競合が発生する可能性があります。
- また、マッピングをログに記録し、mappedPattern値 (ここにあります: https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/java/にある) に従って、見栄えがよくなります。 org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java#L755-L764 )
- 「URI テンプレート変数マップ」の値がnull ( https://github.com/spring-projects/spring-framework/blob/master/spring-webmvc/src/main/ java/org/springframework/web/servlet/mvc/annotation/AnnotationMethodHandlerAdapter.java#L853-L854理由がわからない!