diff --git a/spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMapMethodArgumentResolver.java b/spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMapMethodArgumentResolver.java index 4843782efb9..75e06fbe6c7 100644 --- a/spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMapMethodArgumentResolver.java +++ b/spring-web/src/main/java/org/springframework/web/method/annotation/RequestHeaderMapMethodArgumentResolver.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2012 the original author or authors. + * Copyright 2002-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -46,8 +46,8 @@ import org.springframework.web.method.support.ModelAndViewContainer; public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgumentResolver { public boolean supportsParameter(MethodParameter parameter) { - return parameter.hasParameterAnnotation(RequestHeader.class) - && Map.class.isAssignableFrom(parameter.getParameterType()); + return (parameter.hasParameterAnnotation(RequestHeader.class) && + Map.class.isAssignableFrom(parameter.getParameterType())); } public Object resolveArgument( @@ -56,7 +56,6 @@ public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgu throws Exception { Class paramType = parameter.getParameterType(); - if (MultiValueMap.class.isAssignableFrom(paramType)) { MultiValueMap result; if (HttpHeaders.class.isAssignableFrom(paramType)) { @@ -67,8 +66,11 @@ public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgu } for (Iterator iterator = webRequest.getHeaderNames(); iterator.hasNext();) { String headerName = iterator.next(); - for (String headerValue : webRequest.getHeaderValues(headerName)) { - result.add(headerName, headerValue); + String[] headerValues = webRequest.getHeaderValues(headerName); + if (headerValues != null) { + for (String headerValue : headerValues) { + result.add(headerName, headerValue); + } } } return result; @@ -78,9 +80,12 @@ public class RequestHeaderMapMethodArgumentResolver implements HandlerMethodArgu for (Iterator iterator = webRequest.getHeaderNames(); iterator.hasNext();) { String headerName = iterator.next(); String headerValue = webRequest.getHeader(headerName); - result.put(headerName, headerValue); + if (headerValue != null) { + result.put(headerName, headerValue); + } } return result; } } + }