Close

Spring MVC - Customizing Theme name with FixedThemeResolver

[Last Updated: Jan 10, 2018]

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"
  }
}

Theme Property file

src/main/resources/app-theme.properties

background=beige
content-style=width:500px;border:solid 2px blue;margin:auto;padding:30px;

JSP View:

/src/main/webapp/WEB-INF/index.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 Select All Download
  • spring-mvc-customized-theme-name
    • src
      • main
        • java
          • com
            • logicbig
              • example
                • MyWebConfig.java
          • resources
          • webapp
            • WEB-INF

    See Also