Skip to content

Commit 64f04fc

Browse files
ayudovinsnicoll
authored andcommitted
Make sure cache busting works with error pages
See gh-14583
1 parent 8c896d9 commit 64f04fc

File tree

2 files changed

+20
-6
lines changed

2 files changed

+20
-6
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafAutoConfiguration.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.LinkedHashMap;
2222

2323
import javax.annotation.PostConstruct;
24+
import javax.servlet.DispatcherType;
2425

2526
import com.github.mxab.thymeleaf.extras.dataattribute.dialect.DataAttributeDialect;
2627
import nz.net.ultraq.thymeleaf.LayoutDialect;
@@ -53,6 +54,7 @@
5354
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
5455
import org.springframework.boot.context.properties.EnableConfigurationProperties;
5556
import org.springframework.boot.context.properties.PropertyMapper;
57+
import org.springframework.boot.web.servlet.FilterRegistrationBean;
5658
import org.springframework.context.ApplicationContext;
5759
import org.springframework.context.annotation.Bean;
5860
import org.springframework.context.annotation.Configuration;
@@ -70,6 +72,7 @@
7072
* @author Eddú Meléndez
7173
* @author Daniel Fernández
7274
* @author Kazuki Shimizu
75+
* @author Artsiom Yudovin
7376
*/
7477
@Configuration
7578
@EnableConfigurationProperties(ThymeleafProperties.class)
@@ -166,8 +169,12 @@ static class ThymeleafWebMvcConfiguration {
166169
@Bean
167170
@ConditionalOnMissingBean
168171
@ConditionalOnEnabledResourceChain
169-
public ResourceUrlEncodingFilter resourceUrlEncodingFilter() {
170-
return new ResourceUrlEncodingFilter();
172+
public FilterRegistrationBean resourceUrlEncodingFilter() {
173+
FilterRegistrationBean<ResourceUrlEncodingFilter> filterRegistrationBean = new FilterRegistrationBean<>(
174+
new ResourceUrlEncodingFilter());
175+
filterRegistrationBean.setDispatcherTypes(DispatcherType.REQUEST,
176+
DispatcherType.ERROR);
177+
return filterRegistrationBean;
171178
}
172179

173180
@Configuration

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/thymeleaf/ThymeleafServletAutoConfigurationTests.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@
1818

1919
import java.io.File;
2020
import java.util.Collections;
21+
import java.util.EnumSet;
2122
import java.util.Locale;
2223

24+
import javax.servlet.DispatcherType;
25+
2326
import nz.net.ultraq.thymeleaf.LayoutDialect;
2427
import nz.net.ultraq.thymeleaf.decorators.strategies.GroupingStrategy;
2528
import org.junit.After;
@@ -37,6 +40,7 @@
3740
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
3841
import org.springframework.boot.test.rule.OutputCapture;
3942
import org.springframework.boot.test.util.TestPropertyValues;
43+
import org.springframework.boot.web.servlet.FilterRegistrationBean;
4044
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
4145
import org.springframework.context.annotation.Bean;
4246
import org.springframework.context.annotation.Configuration;
@@ -47,7 +51,6 @@
4751
import org.springframework.test.util.ReflectionTestUtils;
4852
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
4953
import org.springframework.web.servlet.ViewResolver;
50-
import org.springframework.web.servlet.resource.ResourceUrlEncodingFilter;
5154
import org.springframework.web.servlet.support.RequestContext;
5255

5356
import static org.assertj.core.api.Assertions.assertThat;
@@ -61,6 +64,7 @@
6164
* @author Eddú Meléndez
6265
* @author Brian Clozel
6366
* @author Kazuki Shimizu
67+
* @author Artsiom Yudovin
6468
*/
6569
public class ThymeleafServletAutoConfigurationTests {
6670

@@ -205,14 +209,17 @@ public void renderNonWebAppTemplate() {
205209
@Test
206210
public void registerResourceHandlingFilterDisabledByDefault() {
207211
load(BaseConfiguration.class);
208-
assertThat(this.context.getBeansOfType(ResourceUrlEncodingFilter.class))
209-
.isEmpty();
212+
assertThat(this.context.getBeansOfType(FilterRegistrationBean.class)).isEmpty();
210213
}
211214

212215
@Test
213216
public void registerResourceHandlingFilterOnlyIfResourceChainIsEnabled() {
214217
load(BaseConfiguration.class, "spring.resources.chain.enabled:true");
215-
assertThat(this.context.getBean(ResourceUrlEncodingFilter.class)).isNotNull();
218+
FilterRegistrationBean<?> registration = this.context
219+
.getBean(FilterRegistrationBean.class);
220+
assertThat(registration).isNotNull();
221+
assertThat(registration).hasFieldOrPropertyWithValue("dispatcherTypes",
222+
EnumSet.of(DispatcherType.REQUEST, DispatcherType.ERROR));
216223
}
217224

218225
@Test

0 commit comments

Comments
 (0)