/* * Copyright 2002-2008 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.web.servlet.tags; import org.springframework.context.MessageSource; import org.springframework.context.NoSuchMessageException; /** * Custom tag to look up a theme message in the scope of this page. * Messages are looked up using the ApplicationContext's ThemeSource, * and thus should support internationalization. * * <p>Regards a HTML escaping setting, either on this tag instance, * the page level, or the web.xml level. * * <p>If "code" isn't set or cannot be resolved, "text" will be used * as default message. * * @author Jean-Pierre Pawlak * @author Juergen Hoeller * @see org.springframework.ui.context.Theme * @see org.springframework.ui.context.ThemeSource * @see #setCode * @see #setText * @see #setHtmlEscape * @see HtmlEscapeTag#setDefaultHtmlEscape * @see org.springframework.web.util.WebUtils#HTML_ESCAPE_CONTEXT_PARAM */ public class ThemeTag extends MessageTag { /** * Use the theme MessageSource for theme message resolution. */ protected MessageSource getMessageSource() { return getRequestContext().getTheme().getMessageSource(); } /** * Return exception message that indicates the current theme. */ protected String getNoSuchMessageExceptionDescription(NoSuchMessageException ex) { return "Theme '" + getRequestContext().getTheme().getName() + "': " + ex.getMessage(); } }