Commit 64f04fce authored by artsiom's avatar artsiom Committed by Stephane Nicoll

Make sure cache busting works with error pages

See gh-14583
parent 8c896d93
...@@ -21,6 +21,7 @@ import java.util.Collections; ...@@ -21,6 +21,7 @@ import java.util.Collections;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.servlet.DispatcherType;
import com.github.mxab.thymeleaf.extras.dataattribute.dialect.DataAttributeDialect; import com.github.mxab.thymeleaf.extras.dataattribute.dialect.DataAttributeDialect;
import nz.net.ultraq.thymeleaf.LayoutDialect; import nz.net.ultraq.thymeleaf.LayoutDialect;
...@@ -53,6 +54,7 @@ import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfigurat ...@@ -53,6 +54,7 @@ import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfigurat
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration; import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.boot.context.properties.PropertyMapper; import org.springframework.boot.context.properties.PropertyMapper;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -70,6 +72,7 @@ import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter; ...@@ -70,6 +72,7 @@ import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter;
* @author Eddú Meléndez * @author Eddú Meléndez
* @author Daniel Fernández * @author Daniel Fernández
* @author Kazuki Shimizu * @author Kazuki Shimizu
* @author Artsiom Yudovin
*/ */
@Configuration @Configuration
@EnableConfigurationProperties(ThymeleafProperties.class) @EnableConfigurationProperties(ThymeleafProperties.class)
...@@ -166,8 +169,12 @@ public class ThymeleafAutoConfiguration { ...@@ -166,8 +169,12 @@ public class ThymeleafAutoConfiguration {
@Bean @Bean
@ConditionalOnMissingBean @ConditionalOnMissingBean
@ConditionalOnEnabledResourceChain @ConditionalOnEnabledResourceChain
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() { public FilterRegistrationBean resourceUrlEncodingFilter() {
return new ResourceUrlEncodingFilter(); FilterRegistrationBean<ResourceUrlEncodingFilter> filterRegistrationBean = new FilterRegistrationBean<>(
new ResourceUrlEncodingFilter());
filterRegistrationBean.setDispatcherTypes(DispatcherType.REQUEST,
DispatcherType.ERROR);
return filterRegistrationBean;
} }
@Configuration @Configuration
......
...@@ -18,8 +18,11 @@ package org.springframework.boot.autoconfigure.thymeleaf; ...@@ -18,8 +18,11 @@ package org.springframework.boot.autoconfigure.thymeleaf;
import java.io.File; import java.io.File;
import java.util.Collections; import java.util.Collections;
import java.util.EnumSet;
import java.util.Locale; import java.util.Locale;
import javax.servlet.DispatcherType;
import nz.net.ultraq.thymeleaf.LayoutDialect; import nz.net.ultraq.thymeleaf.LayoutDialect;
import nz.net.ultraq.thymeleaf.decorators.strategies.GroupingStrategy; import nz.net.ultraq.thymeleaf.decorators.strategies.GroupingStrategy;
import org.junit.After; import org.junit.After;
...@@ -37,6 +40,7 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration; ...@@ -37,6 +40,7 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.test.rule.OutputCapture; import org.springframework.boot.test.rule.OutputCapture;
import org.springframework.boot.test.util.TestPropertyValues; import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -47,7 +51,6 @@ import org.springframework.mock.web.MockServletContext; ...@@ -47,7 +51,6 @@ import org.springframework.mock.web.MockServletContext;
import org.springframework.test.util.ReflectionTestUtils; import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.ViewResolver; import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter;
import org.springframework.web.servlet.support.RequestContext; import org.springframework.web.servlet.support.RequestContext;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
...@@ -61,6 +64,7 @@ import static org.hamcrest.Matchers.containsString; ...@@ -61,6 +64,7 @@ import static org.hamcrest.Matchers.containsString;
* @author Eddú Meléndez * @author Eddú Meléndez
* @author Brian Clozel * @author Brian Clozel
* @author Kazuki Shimizu * @author Kazuki Shimizu
* @author Artsiom Yudovin
*/ */
public class ThymeleafServletAutoConfigurationTests { public class ThymeleafServletAutoConfigurationTests {
...@@ -205,14 +209,17 @@ public class ThymeleafServletAutoConfigurationTests { ...@@ -205,14 +209,17 @@ public class ThymeleafServletAutoConfigurationTests {
@Test @Test
public void registerResourceHandlingFilterDisabledByDefault() { public void registerResourceHandlingFilterDisabledByDefault() {
load(BaseConfiguration.class); load(BaseConfiguration.class);
assertThat(this.context.getBeansOfType(ResourceUrlEncodingFilter.class)) assertThat(this.context.getBeansOfType(FilterRegistrationBean.class)).isEmpty();
.isEmpty();
} }
@Test @Test
public void registerResourceHandlingFilterOnlyIfResourceChainIsEnabled() { public void registerResourceHandlingFilterOnlyIfResourceChainIsEnabled() {
load(BaseConfiguration.class, "spring.resources.chain.enabled:true"); load(BaseConfiguration.class, "spring.resources.chain.enabled:true");
assertThat(this.context.getBean(ResourceUrlEncodingFilter.class)).isNotNull(); FilterRegistrationBean<?> registration = this.context
.getBean(FilterRegistrationBean.class);
assertThat(registration).isNotNull();
assertThat(registration).hasFieldOrPropertyWithValue("dispatcherTypes",
EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR));
} }
@Test @Test
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment