Following example will show how to customize ThemeResolver. We are still going to use FixedThemeResolver (used by default as well) but with a different theme name.
Example
Java Config class
DispatcherServlet looks for user configured ThemeResolver bean by a specific name as defined by DispatcherServlet.THEME_RESOLVER_BEAN_NAME before falling back to the default one:
@EnableWebMvc
@Configuration
@ComponentScan
public class MyWebConfig implements WebMvcConfigurer {
@Bean(DispatcherServlet.THEME_RESOLVER_BEAN_NAME)
public ThemeResolver customThemeResolver() {
FixedThemeResolver fixedThemeResolver = new FixedThemeResolver();
fixedThemeResolver.setDefaultThemeName("app-theme");
return fixedThemeResolver;
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
//mapping '/' to index view name without a controller
ViewControllerRegistration r = registry.addViewController("/");
r.setViewName("index");
}
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
registry.jsp();//default prefix=/WEB-INF/", suffix=".jsp"
}
}
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
<body style="background-color:<spring:theme code='background'/>;">
<div style="<spring:theme code='content-style'/>">
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.
Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante.
Donec eu libero sit amet quam egestas semper. Aenean ultricies
mi vitae est. Mauris placerat eleifend leo.
</div>
</body>
</html>
To try examples, run embedded tomcat (configured in pom.xml of example project below):
mvn tomcat7:run-war
Output
Example Project
Dependencies and Technologies Used:
spring-webmvc 5.0.2.RELEASE: Spring Web MVC.
javax.servlet-api 3.1.0 Java Servlet API
JDK 1.8
Maven 3.3.9
Spring MVC Customizing theme name with FixedThemeResolver