Clean up content type in ContentNegotiatingViewResolver

This commit removes the quality value of the selected media type before
setting it in the request attribute.

Closes gh-26315
This commit is contained in:
Arjen Poutsma
2021-01-14 14:30:07 +01:00
parent 469eb8146e
commit d1a7fed16c
2 changed files with 23 additions and 0 deletions

View File

@@ -500,4 +500,26 @@ public class ContentNegotiatingViewResolverTests {
assertThat(result).as("Invalid view").isNotNull();
}
@Test
public void resolveQualityValue() throws Exception {
request.addHeader("Accept", "text/html;q=0.9");
ViewResolver viewResolverMock = mock(ViewResolver.class);
viewResolver.setViewResolvers(Collections.singletonList(viewResolverMock));
viewResolver.afterPropertiesSet();
View viewMock = mock(View.class, "text_html");
String viewName = "view";
Locale locale = Locale.ENGLISH;
given(viewResolverMock.resolveViewName(viewName, locale)).willReturn(viewMock);
given(viewMock.getContentType()).willReturn("text/html");
viewResolver.resolveViewName(viewName, locale);
assertThat(request.getAttribute(View.SELECTED_CONTENT_TYPE)).isEqualTo(MediaType.TEXT_HTML);
}
}