Using Themes in Spring MVC:-
You can apply Spring Web MVC framework themes to set the overall
look-and-feel of your application, thereby enhancing user experience. A
theme is a collection of static resources, typically style sheets and
images, that affect the visual style of the application.
Defining Themes:
Using themes in your web application, you must set up an implementation of the
org.springframework.ui.context.ThemeSource interface. The
WebApplicationContext interface extends ThemeSource but delegates its
responsibilities to a dedicated implementation. By default the delegate will be
an org.springframework.ui.context.support.ResourceBundleThemeSource
implementation that loads properties files from the root of the classpath. To
use a custom ThemeSource implementation or to configure the base name prefix of
the ResourceBundleThemeSource, you can register a bean in the application
context with the reserved name themeSource. The web application context
automatically detects a bean with that name and uses it.
The keys of the properties are the names that refer to the themed elements from
view code. For a JSP, you typically do this using the spring:theme
custom tag, which is very similar to the spring:message tag. The
following JSP fragment uses the theme defined in the previous example to
customize the look and feel:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html>
<head>
<link rel="stylesheet" href="<spring:theme code='styleSheet'/>" type="text/css"/>
</head>
<body style="background=<spring:theme code='background'/>">
...
</body>
</html>
Theme resolvers:
Using Theme The DispatcherServlet will look for a bean named
themeResolver to find out which ThemeResolver implementation to use. A theme
resolver works in much the same way as a LocaleResolver. It detects the
theme to use for a particular request and can also alter the request’s theme.
The following theme resolvers are provided by Spring:
1 FixedThemeResolver: Selects a fixed theme, set using the
defaultThemeName property.
2 SessionThemeResolver: The theme is maintained in the user’s HTTP session. It only needs to be set once for each session, but is not persisted between sessions.
3 CookieThemeResolver: The selected theme is stored in a cookie on the client.