⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 osdecoratormapper.java

📁 OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件
💻 JAVA
字号:
/* * Title:        OSDecoratorMapper * Description: * * This software is published under the terms of the OpenSymphony Software * License version 1.1, of which a copy has been included with this * distribution in the LICENSE.txt file. */package com.opensymphony.module.sitemesh.mapper;import com.opensymphony.module.sitemesh.Config;import com.opensymphony.module.sitemesh.Decorator;import com.opensymphony.module.sitemesh.DecoratorMapper;import com.opensymphony.module.sitemesh.Page;import javax.servlet.http.HttpServletRequest;import java.util.Enumeration;import java.util.Properties;/** * The OSDecoratorMapper will map a suitable decorator based on the operating system * of the remote client. * * <p>OSDecoratorMapper works by checking to see if the "UA-OS" header * was sent with the HTTP request. If it was, the class will check the * value of the header with all the different os's the user has configured * the Decorator Mapper to identify and, if a match is found, routes the * request accordingly.  Configuration is done using the sitemesh.xml file. * The param name is a string literal (operating system name) you would like * to match in the UA-OS header, and the value is what will be appended to the * decorator name if the user is using that operating system</p> * * @author	<a href="mailto:schepdawg@yahoo.com">Adam P. Schepis</a> * @version	$Revision: 1.4 $ * * @see com.opensymphony.module.sitemesh.mapper.AbstractDecoratorMapper */public class OSDecoratorMapper extends AbstractDecoratorMapper {    /**     * Properties holds the parameters that the object was initialized with.     */    protected Properties properties;    /**     * Init initializes the OSDecoratorMapper object by setting the parent     * DecoratorMapper, and loading the initialization properties.     *     * @param config	The config file     * @param properties	An object containing intialization parameters     * @param parent	The parent DecoratorMapper object     */    public void init(Config config, Properties properties, DecoratorMapper parent) throws java.lang.InstantiationException {        this.properties = properties;        this.parent = parent;    }    /**     * Attempts to find the correct decorator for Page page based on     * the UA-OS HTTP header in the request.     *     * @param request The HTTP request sent to the server     * @param page The page SiteMesh is trying to find a decorator for     *     * @return A Decorator object that is either the decorator for the identified     * OS, or the parent DecoratorMapper's decorator     */    public Decorator getDecorator(HttpServletRequest request, Page page) {        String osHeader = request.getHeader("UA-OS");        if (osHeader == null) return parent.getDecorator(request, page);        // run through the list of operating systems the application developer listed        // in sitemesh.xml to see if we have a match to the user's current OS        for (Enumeration e = properties.propertyNames(); e.hasMoreElements();) {            String os = (String) e.nextElement();            // see if the name matches the user's operating system name            if (osHeader.toLowerCase().indexOf(os.toLowerCase()) != -1) {                String decoratorName = parent.getDecorator(request, page).getName();                if (decoratorName != null) {                    decoratorName += '-' + properties.getProperty(os);                }                return getNamedDecorator(request, decoratorName);            }        }        return parent.getDecorator(request, page);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -