Support java.util.Optional for @MVC named value args
After this change, java.util.Optional is supported with @RequestParam, @RequestHeader, and @MatrixVariable arguments in Java 8. When Optional is used the required flag is effectively ignored. Issue: SPR-11829
This commit is contained in:
@@ -77,9 +77,12 @@ public class RequestHeaderMethodArgumentResolver extends AbstractNamedValueMetho
|
||||
|
||||
@Override
|
||||
protected void handleMissingValue(String headerName, MethodParameter param) throws ServletRequestBindingException {
|
||||
String paramType = param.getParameterType().getName();
|
||||
throw new ServletRequestBindingException(
|
||||
"Missing header '" + headerName + "' for method parameter type [" + paramType + "]");
|
||||
Class<?> paramType = param.getParameterType();
|
||||
if (!paramType.getName().equals("java.util.Optional")) {
|
||||
throw new ServletRequestBindingException(
|
||||
"Missing header '" + headerName + "' for method parameter type [" + paramType.getName() + "]");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private static class RequestHeaderNamedValueInfo extends NamedValueInfo {
|
||||
|
||||
@@ -252,7 +252,9 @@ public class RequestParamMethodArgumentResolver extends AbstractNamedValueMethod
|
||||
|
||||
@Override
|
||||
protected void handleMissingValue(String paramName, MethodParameter parameter) throws ServletException {
|
||||
throw new MissingServletRequestParameterException(paramName, parameter.getParameterType().getSimpleName());
|
||||
if (!parameter.getParameterType().getName().equals("java.util.Optional")) {
|
||||
throw new MissingServletRequestParameterException(paramName, parameter.getParameterType().getSimpleName());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user