1 16 17 package org.springframework.web.servlet.theme; 18 19 import javax.servlet.http.Cookie ; 20 import javax.servlet.http.HttpServletRequest ; 21 import javax.servlet.http.HttpServletResponse ; 22 23 import org.springframework.web.servlet.ThemeResolver; 24 import org.springframework.web.util.CookieGenerator; 25 import org.springframework.web.util.WebUtils; 26 27 40 public class CookieThemeResolver extends CookieGenerator implements ThemeResolver { 41 42 public final static String ORIGINAL_DEFAULT_THEME_NAME = "theme"; 43 44 51 public static final String THEME_REQUEST_ATTRIBUTE_NAME = CookieThemeResolver.class.getName() + ".THEME"; 52 53 public static final String DEFAULT_COOKIE_NAME = CookieThemeResolver.class.getName() + ".THEME"; 54 55 56 private String defaultThemeName = ORIGINAL_DEFAULT_THEME_NAME; 57 58 59 public CookieThemeResolver() { 60 setCookieName(DEFAULT_COOKIE_NAME); 61 } 62 63 64 67 public void setDefaultThemeName(String defaultThemeName) { 68 this.defaultThemeName = defaultThemeName; 69 } 70 71 74 public String getDefaultThemeName() { 75 return defaultThemeName; 76 } 77 78 79 public String resolveThemeName(HttpServletRequest request) { 80 String theme = (String ) request.getAttribute(THEME_REQUEST_ATTRIBUTE_NAME); 82 if (theme != null) { 83 return theme; 84 } 85 86 Cookie cookie = WebUtils.getCookie(request, getCookieName()); 88 if (cookie != null) { 89 return cookie.getValue(); 90 } 91 92 return getDefaultThemeName(); 94 } 95 96 public void setThemeName(HttpServletRequest request, HttpServletResponse response, String themeName) { 97 if (themeName != null) { 98 request.setAttribute(THEME_REQUEST_ATTRIBUTE_NAME, themeName); 100 addCookie(response, themeName); 101 } 102 103 else { 104 request.setAttribute(THEME_REQUEST_ATTRIBUTE_NAME, getDefaultThemeName()); 106 removeCookie(response); 107 } 108 } 109 110 } 111 | Popular Tags |