SpringMVC异常: Required request body content is missing

1、项目异常信息:

org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing

2、异常代码片段:

    @ApiOperation(httpMethod = "POST", value = "数据权限信息保存")
    @RequestMapping(value="/insert", method={RequestMethod.POST})
    @ResponseBody
    public Result insert(@RequestBody @ApiParam(name="用户对象", value="json格式对象", required=true) *** entity) ;

3、SpringMVC源代码分析:

@Override
 protected <T> Object readWithMessageConverters(NativeWebRequest webRequest, MethodParameter parameter,
           Type paramType) throws IOException, HttpMediaTypeNotSupportedException, HttpMessageNotReadableException {

        HttpServletRequest servletRequest = webRequest.getNativeRequest(HttpServletRequest.class);
         ServletServerHttpRequest inputMessage = new ServletServerHttpRequest(servletRequest);
 
        Object arg = readWithMessageConverters(inputMessage, parameter, paramType);
          if (arg == null) {
            if (checkRequired(parameter)) {
                throw new HttpMessageNotReadableException("Required request body is missing: " +
                       parameter.getMethod().toGenericString());
            }
        }
         return arg;
    }

    protected boolean checkRequired(MethodParameter parameter) {
       return (parameter.getParameterAnnotation(RequestBody.class).required() && !parameter.isOptional());
   }

  从上述源代码checkRequired方法中可以看出:RequestBody 注解属性required的属性值, parameter.isOptiona判断请求参数是否为空。

public @interface RequestBody {
 
     /**
     * Whether body content is required.
      * <p>Default is {@code true}, leading to an exception thrown in case
      * there is no body content. Switch this to {@code false} if you prefer
      * {@code null} to be passed when the body content is {@code null}.
     * @since 3.2
     */
    boolean required() default true;
 }

从上述代码可以看出:RequestBody注解required的属性值,默认取值为:true.

4、解决办法:@RequestBody(required = false)

猜你喜欢

转载自blog.csdn.net/zhouzhiwengang/article/details/81634976
今日推荐