6

私は自分のアプリケーションにSpringFramework3を使用しました。Netbeansで開発中はすべて問題ありませんが、カスタムビルドが必要で、同じビルドを実行しても問題ありませんが、次のエラーが発生しました。次のメソッドの呼び出し中にエラーが発生しました

@RequestMapping(value = "/security/login", method = RequestMethod.POST)
public ModelAndView login(@RequestParam String userName, @RequestParam String password, 
    HttpServletRequest request) {
    ......................

しかし、netbeansとの戦争を作成している間は問題はありません(コンパイルの問題についてであると確信しています)この問題についての経験はありますか...同じものをコンパイルするための追加のjavac引数があります(netbeansはそこでカスタムタスクを使用しましたコンパイル)

タイプ例外レポート

メッセージ

説明サーバーで内部エラー()が発生したため、この要求を実行できませんでした。

例外

org.springframework.web.util.NestedServletException:リクエストの処理に失敗しました。ネストされた例外はorg.springframework.web.bind.annotation.support.HandlerMethodInvocationExceptionです:ハンドラーメソッドの呼び出しに失敗しました[public org.springframework.web.servlet.ModelAndView com.mypackage.security.controller.LoginController.login(java.lang.String 、java.lang.String、javax.servlet.http.HttpServletRequest)]; ネストされた例外はjava.lang.IllegalStateExceptionです。タイプ[java.lang.String]の引数にパラメーター名が指定されておらず、クラスファイルにもパラメーター名情報が見つかりません。
 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:659)
 org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 com.mypackage.security.controller.AuthFilter.doFilter(不明なソース)
 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

根本的な原因

org.springframework.web.bind.annotation.support.HandlerMethodInvocationException:ハンドラーメソッドの呼び出しに失敗しました[public org.springframework.web.servlet.ModelAndView com.mypackage.security.controller.LoginController.login(java.lang.String、java。 lang.String、javax.servlet.http.HttpServletRequest)]; ネストされた例外はjava.lang.IllegalStateExceptionです。タイプ[java.lang.String]の引数にパラメーター名が指定されておらず、クラスファイルにもパラメーター名情報が見つかりません。
 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:171)
 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
 org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 com.mypackage.security.controller.AuthFilter.doFilter(不明なソース)
 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

根本的な原因

java.lang.IllegalStateException:タイプ[java.lang.String]の引数にパラメーター名が指定されておらず、クラスファイルにもパラメーター名情報が見つかりません。
 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.getRequiredParameterName(HandlerMethodInvoker.java:618)
 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveRequestParam(HandlerMethodInvoker.java:417)
 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:277)
 org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:163)
 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:414)
 org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:402)
 org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:771)
 org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
 org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:563)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 com.mypackage.security.controller.AuthFilter.doFilter(不明なソース)
 org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
 org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)

注根本原因の完全なスタックトレースは、Apache Tomcat/6.0.18ログで入手できます。

4

1 に答える 1

18

引数名は、デバッグモードでコンパイルされた場合にのみコンパイルされたコードに格納されるため、デバッグモードでコンパイルするか@RequestParam、明示的なパラメーター名を指定する必要があります。後者のアプローチは、環境に依存しないため、より信頼性が高くなります。

@RequestMapping(value = "/security/login", method = RequestMethod.POST) 
public ModelAndView login(@RequestParam("userName") String userName, 
    @RequestParam("password") String password,  
    HttpServletRequest request) { 
    ......................
于 2010-04-12T14:27:52.793 に答える