{"id":1573,"date":"2016-10-04T14:50:47","date_gmt":"2016-10-04T12:50:47","guid":{"rendered":"http:\/\/blog.rabahi.net\/?page_id=1573"},"modified":"2016-10-04T17:29:26","modified_gmt":"2016-10-04T15:29:26","slug":"java-spring-theme","status":"publish","type":"page","link":"https:\/\/blog.rabahi.net\/?page_id=1573","title":{"rendered":"Java Spring &#8211; Theme"},"content":{"rendered":"<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#Prerequistes\"><span class=\"toc_number toc_depth_1\">1<\/span> Prerequistes<\/a><\/li><li><a href=\"#Configuration\"><span class=\"toc_number toc_depth_1\">2<\/span> Configuration<\/a><ul><li><a href=\"#WebMvcConfigjava\"><span class=\"toc_number toc_depth_2\">2.1<\/span> WebMvcConfig.java<\/a><\/li><li><a href=\"#Resources\"><span class=\"toc_number toc_depth_2\">2.2<\/span> Resources<\/a><\/li><li><a href=\"#CSS\"><span class=\"toc_number toc_depth_2\">2.3<\/span> CSS<\/a><\/li><li><a href=\"#JSP\"><span class=\"toc_number toc_depth_2\">2.4<\/span> JSP<\/a><ul><li><a href=\"#Theme\"><span class=\"toc_number toc_depth_3\">2.4.1<\/span> Theme<\/a><\/li><\/ul><\/li><\/ul><\/li><\/ul><\/div>\n<h1><span id=\"Prerequistes\">Prerequistes<\/span><\/h1>\n<p>Please read : <a href=\"?page_id=1549\">Java spring &#8211; quickstart<\/a><\/p>\n<h1><span id=\"Configuration\">Configuration<\/span><\/h1>\n<h2><span id=\"WebMvcConfigjava\">WebMvcConfig.java<\/span><\/h2>\n<p>In WebMvcConfig.java, add the following beans :<\/p>\n<pre lang=\"java\">\r\n@Bean\r\npublic ResourceBundleThemeSource themeSource() {\r\n  ResourceBundleThemeSource resourceBundleThemeSource =  new ResourceBundleThemeSource();\r\n  resourceBundleThemeSource.setBasenamePrefix(\"theme-\");\r\n  return resourceBundleThemeSource;\r\n}\r\n\r\n@Bean\r\npublic CookieThemeResolver themeResolver() {\r\n  CookieThemeResolver cookieThemeResolver = new CookieThemeResolver();\r\n  cookieThemeResolver.setDefaultThemeName(\"default\");\r\n  return cookieThemeResolver;\r\n}\r\n\r\n<\/pre>\n<p>Still WebMvcConfig.java, register interceptor:<\/p>\n<pre lang=\"java\">\r\n@Override\r\npublic void addInterceptors(InterceptorRegistry registry) {\r\n  ThemeChangeInterceptor themeInterceptor = new ThemeChangeInterceptor();\r\n  themeInterceptor.setParamName(\"theme\");\r\n  registry.addInterceptor(themeInterceptor);\r\n}\r\n<\/pre>\n<p>Finally, and still in WebMvcConfig.java, add the following resources to access to CSS:<\/p>\n<pre lang=\"java\">\r\n@Override\r\npublic void addResourceHandlers(final ResourceHandlerRegistry registry) {\r\n  registry.addResourceHandler(\"\/**\").addResourceLocations(\"\/\");\r\n}\r\n<\/pre>\n<h2><span id=\"Resources\">Resources<\/span><\/h2>\n<p>Create the following file src\/main\/resources\/theme-default.properties :<\/p>\n<pre lang=\"properties\">\r\ncss=themes\/default.css\r\n<\/pre>\n<p>Create the following file src\/main\/resources\/theme-blue.properties :<\/p>\n<pre lang=\"properties\">\r\ncss=themes\/blue.css\r\n<\/pre>\n<h2><span id=\"CSS\">CSS<\/span><\/h2>\n<p>Create the following file src\/main\/webapp\/theme\/default.css :<\/p>\n<pre lang=\"css\">\r\nbody {\r\n\tbackground-color: white;\r\n\tcolor: black;\r\n}\r\n<\/pre>\n<p>Create the following file src\/main\/webapp\/theme\/blue.css:<\/p>\n<pre lang=\"css\">\r\nbody {\r\n\tbackground-color: #DBF5FF;\r\n\tcolor: #007AAB;\r\n}\r\n<\/pre>\n<h2><span id=\"JSP\">JSP<\/span><\/h2>\n<pre lang=\"html\">\r\n<%@ taglib uri=\"http:\/\/www.springframework.org\/tags\" prefix=\"spring\"%>\r\n<!DOCTYPE HTML>\r\n<html>\r\n<head>\r\n<link rel=\"stylesheet\" href=\"<spring:theme code=\"css\"\/>\" type=\"text\/css\"\/>\r\n<\/head>\r\n<body>\r\n\r\n<h3><span id=\"Theme\">Theme<\/span><\/h3>\r\n \r\n<span style=\"float: left\">\r\n    <a href=\"?theme=default\" id=\"theme-default\">default<\/a> \r\n    | \r\n    <a href=\"?theme=blue\" id=\"theme-blue\">blue<\/a>\r\n<\/span>\r\n\r\n<\/body>\r\n<\/html>\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Contents1 Prerequistes2 Configuration2.1 WebMvcConfig.java2.2 Resources2.3 CSS2.4 JSP2.4.1 Theme Prerequistes Please read : Java spring &#8211; quickstart Configuration WebMvcConfig.java In WebMvcConfig.java, add the following beans : @Bean public ResourceBundleThemeSource themeSource() { ResourceBundleThemeSource resourceBundleThemeSource = new ResourceBundleThemeSource(); resourceBundleThemeSource.setBasenamePrefix(&#8220;theme-&#8220;); return resourceBundleThemeSource; } @Bean public CookieThemeResolver themeResolver() { CookieThemeResolver cookieThemeResolver = new CookieThemeResolver(); cookieThemeResolver.setDefaultThemeName(&#8220;default&#8221;); return cookieThemeResolver; } Still WebMvcConfig.java, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1547,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1573","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1573","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1573"}],"version-history":[{"count":6,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1573\/revisions"}],"predecessor-version":[{"id":1620,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1573\/revisions\/1620"}],"up":[{"embeddable":true,"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=\/wp\/v2\/pages\/1547"}],"wp:attachment":[{"href":"https:\/\/blog.rabahi.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1573"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}