diff --git a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java index e7b91481f1..9bde1b4054 100644 --- a/spring-web/src/main/java/org/springframework/http/HttpHeaders.java +++ b/spring-web/src/main/java/org/springframework/http/HttpHeaders.java @@ -467,7 +467,7 @@ public class HttpHeaders implements MultiValueMap, Serializable */ public List getAcceptLanguage() { String value = getFirst(ACCEPT_LANGUAGE); - return value != null ? Locale.LanguageRange.parse(value) : Collections.emptyList(); + return StringUtils.hasText(value) ? Locale.LanguageRange.parse(value) : Collections.emptyList(); } /** diff --git a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java index a6afa4935b..da57a96722 100644 --- a/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java +++ b/spring-web/src/test/java/org/springframework/http/HttpHeadersTests.java @@ -447,6 +447,12 @@ public class HttpHeadersTests { assertEquals(Locale.FRANCE, headers.getAcceptLanguageAsLocales().get(0)); } + @Test // SPR-15603 + public void acceptLanguageWithEmptyValue() throws Exception { + this.headers.set(HttpHeaders.ACCEPT_LANGUAGE, ""); + assertEquals(Collections.emptyList(), this.headers.getAcceptLanguageAsLocales()); + } + @Test public void contentLanguage() { headers.setContentLanguage(Locale.FRANCE);