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

📄 configdecoratormapper.java

📁 OS(OpenSymphony)的SiteMesh是一个用来在JSP中实现页面布局和装饰(layout and decoration)的框架组件
💻 JAVA
字号:
/* * Title:        ConfigDecoratorMapper * 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.ServletException;import javax.servlet.http.HttpServletRequest;import java.util.Properties;/** * Default implementation of DecoratorMapper. Reads decorators and * mappings from the <code>config</code> property (default '/WEB-INF/decorators.xml'). * * @author <a href="joe@truemesh.com">Joe Walnes</a> * @author <a href="mcannon@internet.com">Mike Cannon-Brookes</a> * @version $Revision: 1.2 $ * * @see com.opensymphony.module.sitemesh.DecoratorMapper * @see com.opensymphony.module.sitemesh.mapper.DefaultDecorator * @see com.opensymphony.module.sitemesh.mapper.ConfigLoader */public class ConfigDecoratorMapper extends AbstractDecoratorMapper {    private ConfigLoader configLoader = null;    /** Create new ConfigLoader using '/WEB-INF/decorators.xml' file. */    public void init(Config config, Properties properties, DecoratorMapper parent) throws InstantiationException {        super.init(config, properties, parent);        try {            String fileName = properties.getProperty("config", "/WEB-INF/decorators.xml");            configLoader = new ConfigLoader(fileName, config);        }        catch (Exception e) {            throw new InstantiationException(e.toString());        }    }    /** Retrieve {@link com.opensymphony.module.sitemesh.Decorator} based on 'pattern' tag. */    public Decorator getDecorator(HttpServletRequest request, Page page) {        String thisPath = request.getServletPath();        // getServletPath() returns null unless the mapping corresponds to a servlet        if (thisPath == null) {            String requestURI = request.getRequestURI();            if (request.getPathInfo() != null) {                // strip the pathInfo from the requestURI                thisPath = requestURI.substring(0, requestURI.indexOf(request.getPathInfo()));            }            else {                thisPath = requestURI;            }        }        else if ("".equals(thisPath)) {            // in servlet 2.4, if a request is mapped to '/*', getServletPath returns null (SIM-130)            thisPath = request.getPathInfo();        }        String name = null;        try {            name = configLoader.getMappedName(thisPath);        }        catch (ServletException e) {            e.printStackTrace();        }        Decorator result = getNamedDecorator(request, name);        return result == null ? super.getDecorator(request, page) : result;    }    /** Retrieve Decorator named in 'name' attribute. Checks the role if specified. */    public Decorator getNamedDecorator(HttpServletRequest request, String name) {        Decorator result = null;        try {            result = configLoader.getDecoratorByName(name);        }        catch (ServletException e) {            e.printStackTrace();        }        if (result == null || (result.getRole() != null && !request.isUserInRole(result.getRole()))) {            // if the result is null or the user is not in the role            return super.getNamedDecorator(request, name);        }        else {            return result;        }    }}

⌨️ 快捷键说明

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