HTTP状态400 - 必需的字符串参数' testParam'在春季MVC中不存在

时间:2017-11-27 15:09:29

标签: spring spring-mvc servlets

我想了解春天的运作方式.. 我创建了一个表单和一个控制器。我故意在方法中添加了一个参数,该参数与请求中的参数不匹配,我得到如下错误。

HTTP状态400 - 必需字符串参数' testParam'不存在

CMMotionActivityManager.isActivityAvailable()

requestParam是" testParam"这是必须的,所以我得到这个错误。 我的问题是这个错误的处理位置。 dispatcherServlet是否检查了方法并立即返回404,或者是否尝试将其传递给控制器​​的方法并且错误发生在那里?

我希望问题很清楚..谢谢。

1 个答案:

答案 0 :(得分:1)

未调用控制器方法,在此调用之前完成处理和参数检查。处理流程如下:

  

DispatcherServlet.doDispatch() - >   RequestMappingHandlerAdapter.invokeHandlerMethod() - >   ServletInvocableHandlerMethod.invokeForRequest() - >   InvocableHandlerMethod.getMethodArgumentValues() - >   HandlerMethodArgumentResolver.resolveArgument()

此时检测到所需参数不匹配且抛出MissingServletRequestParameterException

DefaultHandlerExceptionResolver处理MissingServletRequestParameterException会导致状态代码为错误的回复:错误请求400。