您好,欢迎访问一九零五行业门户网

扩展Sitemesh3 DecoratorSelector实现基于请求参数调用装饰模板页面的实现_html/css_WEB-ITnose

扩展入口filter实现:
package lab.s2jh.core.web.sitemesh;import org.sitemesh.decoratorselector;import org.sitemesh.builder.sitemeshfilterbuilder;import org.sitemesh.config.configurablesitemeshfilter;import org.sitemesh.webapp.webappcontext;/** * 扩展实现注入基于request参数decorator值进行动态定位装饰器的选择器 */public class paramconfigurablesitemeshfilter extends configurablesitemeshfilter { protected void applycustomconfiguration(sitemeshfilterbuilder builder) { //获取原有默认配置装饰选择器 decoratorselector defaultdecoratorselector = builder.getdecoratorselector(); //赋给自定义装饰选择器,则自定义规则未匹配时调用默认选择器获取 builder.setcustomdecoratorselector(new paramdecoratorselector(defaultdecoratorselector)); }}
定制装饰选择器实现:
package lab.s2jh.core.web.sitemesh;import java.io.ioexception;import javax.servlet.http.httpservletrequest;import org.apache.commons.lang3.stringutils;import org.sitemesh.decoratorselector;import org.sitemesh.content.content;import org.sitemesh.webapp.webappcontext;/** * 基于request参数decorator值进行动态定位装饰器的选择器 * 如果decorator参数有值,则返回/web-inf/views/layouts/ + decorator + .jsp作为目标装饰模板页面 */public class paramdecoratorselector implements decoratorselector { private decoratorselector defaultdecoratorselector; public paramdecoratorselector(decoratorselector defaultdecoratorselector) { this.defaultdecoratorselector = defaultdecoratorselector; } public string[] selectdecoratorpaths(content content, webappcontext context) throws ioexception { // build decorator based on the request httpservletrequest request = context.getrequest(); string decorator = request.getparameter(decorator); if (stringutils.isnotblank(decorator)) { //按照参数值返回对应路径下面的jsp装饰模板页码 return new string[] { /web-inf/views/layouts/ + decorator + .jsp }; } // otherwise, fallback to the standard configuration return defaultdecoratorselector.selectdecoratorpaths(content, context); }}
调整web.xml配置:
sitemeshfilter lab.s2jh.core.web.sitemesh.paramconfigurablesitemeshfilter sitemeshfilter /*
其它类似信息

推荐信息