Use ResolvableType to create WebDataBinder
This provides more flexibility to pass a targetType even if a MethodParameter is not available. See gh-26721
This commit is contained in:
@@ -23,6 +23,7 @@ import java.util.List;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.http.HttpInputMessage;
|
||||
import org.springframework.http.converter.HttpMessageConverter;
|
||||
import org.springframework.lang.Nullable;
|
||||
@@ -139,7 +140,8 @@ public class RequestPartMethodArgumentResolver extends AbstractMessageConverterM
|
||||
HttpInputMessage inputMessage = new RequestPartServletServerHttpRequest(servletRequest, name);
|
||||
arg = readWithMessageConverters(inputMessage, parameter, parameter.getNestedGenericParameterType());
|
||||
if (binderFactory != null) {
|
||||
WebDataBinder binder = binderFactory.createBinder(request, arg, name, parameter);
|
||||
ResolvableType type = ResolvableType.forMethodParameter(parameter);
|
||||
WebDataBinder binder = binderFactory.createBinder(request, arg, name, type);
|
||||
if (arg != null) {
|
||||
validateIfApplicable(binder, parameter);
|
||||
if (binder.getBindingResult().hasErrors() && isBindExceptionRequired(binder, parameter)) {
|
||||
|
||||
@@ -23,6 +23,7 @@ import java.util.List;
|
||||
|
||||
import org.springframework.core.Conventions;
|
||||
import org.springframework.core.MethodParameter;
|
||||
import org.springframework.core.ResolvableType;
|
||||
import org.springframework.core.annotation.AnnotatedElementUtils;
|
||||
import org.springframework.http.HttpStatusCode;
|
||||
import org.springframework.http.ProblemDetail;
|
||||
@@ -134,7 +135,8 @@ public class RequestResponseBodyMethodProcessor extends AbstractMessageConverter
|
||||
String name = Conventions.getVariableNameForParameter(parameter);
|
||||
|
||||
if (binderFactory != null) {
|
||||
WebDataBinder binder = binderFactory.createBinder(webRequest, arg, name, parameter);
|
||||
ResolvableType type = ResolvableType.forMethodParameter(parameter);
|
||||
WebDataBinder binder = binderFactory.createBinder(webRequest, arg, name, type);
|
||||
if (arg != null) {
|
||||
validateIfApplicable(binder, parameter);
|
||||
if (binder.getBindingResult().hasErrors() && isBindExceptionRequired(binder, parameter)) {
|
||||
|
||||
Reference in New Issue
Block a user