diff --git a/spring-web/src/main/java/org/springframework/web/accept/MappingMediaTypeFileExtensionResolver.java b/spring-web/src/main/java/org/springframework/web/accept/MappingMediaTypeFileExtensionResolver.java index e418e61c038..72672f913eb 100644 --- a/spring-web/src/main/java/org/springframework/web/accept/MappingMediaTypeFileExtensionResolver.java +++ b/spring-web/src/main/java/org/springframework/web/accept/MappingMediaTypeFileExtensionResolver.java @@ -95,7 +95,7 @@ public class MappingMediaTypeFileExtensionResolver implements MediaTypeFileExten @Override public List resolveFileExtensions(MediaType mediaType) { - List fileExtensions = this.fileExtensions.get(mediaType); + List fileExtensions = this.fileExtensions.get(mediaType.removeQualityValue()); return (fileExtensions != null ? fileExtensions : Collections.emptyList()); } diff --git a/spring-web/src/test/java/org/springframework/web/accept/MappingMediaTypeFileExtensionResolverTests.java b/spring-web/src/test/java/org/springframework/web/accept/MappingMediaTypeFileExtensionResolverTests.java index 5d954e9126e..9b57668e739 100644 --- a/spring-web/src/test/java/org/springframework/web/accept/MappingMediaTypeFileExtensionResolverTests.java +++ b/spring-web/src/test/java/org/springframework/web/accept/MappingMediaTypeFileExtensionResolverTests.java @@ -53,6 +53,14 @@ class MappingMediaTypeFileExtensionResolverTests { .resolveFileExtensions(MediaType.TEXT_HTML)).isEmpty(); } + @Test + void resolveExtensionsWithQualityParameter() { + List extensions = new MappingMediaTypeFileExtensionResolver(DEFAULT_MAPPINGS) + .resolveFileExtensions(MediaType.parseMediaType("application/json;q=0.9")); + + assertThat(extensions).containsExactly("json"); + } + @Test // SPR-13747 public void lookupMediaTypeCaseInsensitive() { assertThat(new MappingMediaTypeFileExtensionResolver(DEFAULT_MAPPINGS).lookupMediaType("JSON"))