📄 filedecoratormapper.java
字号:
/* * Title: FileDecoratorMapper * 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.Decorator;import java.io.File;import java.net.MalformedURLException;import java.net.URL;import javax.servlet.http.HttpServletRequest;/** * The FileDecoratorMapper will treat the name of the decorator as a file-name to use * (in the context of the web-app). * * @author <a href="joe@truemesh.com">Joe Walnes</a> * @author <a href="mike@atlassian.com">Mike Cannon-Brookes</a> * @version $Revision: 1.3 $ * * @see com.opensymphony.module.sitemesh.DecoratorMapper * @see com.opensymphony.module.sitemesh.mapper.DefaultDecorator */public class FileDecoratorMapper extends AbstractDecoratorMapper { private boolean pathNotAvailable = false; public Decorator getNamedDecorator(HttpServletRequest req, String name) { if (pathNotAvailable || name == null) { return super.getNamedDecorator(req, name); } URL resourcePath; // try to locate the resource (might be an unexpanded WAR) try { resourcePath = config.getServletContext().getResource('/' + name); } catch (MalformedURLException e) { return super.getNamedDecorator(req, name); } String filePath = config.getServletContext().getRealPath(name); if (filePath == null && resourcePath == null) { pathNotAvailable = true; return super.getNamedDecorator(req, name); } else if (filePath != null) { // do we really need this disk file check?! File file = new File(filePath); if (file.exists() && file.canRead() && file.isFile()) { // if filename exists with name of supplied decorator, return Decorator return new DefaultDecorator(name, name, null); } else { // otherwise delegate to parent mapper. return super.getNamedDecorator(req, name); } } else { // file path is null and resource path is not null - can't check file on disk return new DefaultDecorator(name, name, null); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -