|  | @ -1,9 +1,13 @@
 | 
	
		
			
				|  |  | package cn.stylefeng.guns.core.web;
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | import cn.stylefeng.guns.core.context.param.RequestParamContext;
 | 
	
		
			
				|  |  | import org.springframework.core.Conventions;
 | 
	
		
			
				|  |  | import org.springframework.core.MethodParameter;
 | 
	
		
			
				|  |  | import org.springframework.http.converter.HttpMessageConverter;
 | 
	
		
			
				|  |  | import org.springframework.lang.Nullable;
 | 
	
		
			
				|  |  | import org.springframework.validation.BindingResult;
 | 
	
		
			
				|  |  | import org.springframework.web.bind.MethodArgumentNotValidException;
 | 
	
		
			
				|  |  | import org.springframework.web.bind.WebDataBinder;
 | 
	
		
			
				|  |  | import org.springframework.web.bind.support.WebDataBinderFactory;
 | 
	
		
			
				|  |  | import org.springframework.web.context.request.NativeWebRequest;
 | 
	
		
			
				|  |  | import org.springframework.web.method.support.ModelAndViewContainer;
 | 
	
	
		
			
				|  | @ -27,11 +31,27 @@ public class GunsRequestResponseBodyMethodProcessor extends RequestResponseBodyM
 | 
	
		
			
				|  |  |     public Object resolveArgument(MethodParameter parameter, @Nullable ModelAndViewContainer mavContainer,
 | 
	
		
			
				|  |  |                                   NativeWebRequest webRequest, @Nullable WebDataBinderFactory binderFactory) throws Exception {
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         Object paramResult = super.resolveArgument(parameter, mavContainer, webRequest, binderFactory);
 | 
	
		
			
				|  |  |         parameter = parameter.nestedIfOptional();
 | 
	
		
			
				|  |  |         Object arg = readWithMessageConverters(webRequest, parameter, parameter.getNestedGenericParameterType());
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         // 临时缓存一下@RequestBody注解上的参数
 | 
	
		
			
				|  |  |         RequestParamContext.setObject(paramResult);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return paramResult;
 | 
	
		
			
				|  |  |         RequestParamContext.setObject(arg);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         String name = Conventions.getVariableNameForParameter(parameter);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         if (binderFactory != null) {
 | 
	
		
			
				|  |  |             WebDataBinder binder = binderFactory.createBinder(webRequest, arg, name);
 | 
	
		
			
				|  |  |             if (arg != null) {
 | 
	
		
			
				|  |  |                 validateIfApplicable(binder, parameter);
 | 
	
		
			
				|  |  |                 if (binder.getBindingResult().hasErrors() && isBindExceptionRequired(binder, parameter)) {
 | 
	
		
			
				|  |  |                     throw new MethodArgumentNotValidException(parameter, binder.getBindingResult());
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if (mavContainer != null) {
 | 
	
		
			
				|  |  |                 mavContainer.addAttribute(BindingResult.MODEL_KEY_PREFIX + name, binder.getBindingResult());
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |         return adaptArgumentIfNecessary(arg, parameter);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 |