要使用decorator标签需要下载sitemesh.jar包.
decorator标签可以轻松解决页面布局的问题,轻松是因为相比<include>标签(需要在每个页面都用他引入JSP)而 言,decorator标签的使用很简便,只需要在配置文件decorators.xml进行相应的配置再加上一个装饰器(其实就是一个JSP页面)即 可.
加上强大的过滤器,你可以装饰何一个被打开的页面,而不用像以前一样加工每一个JSP页面。
装饰器例子:
<excludes>
<pattern>/Login*</pattern>
</excludes>
可以定义JSP页面,也可以定义为URL请求!
<decoratorname=“pop"page=“PopPage.jsp">
<pattern>/showinfo.jsp*</pattern>
<pattern>
/myModule/GreatWallDetailAction.do*
</pattern>
</decorator>
<excludes> 标签代表不对定义的请求名进行装饰
<decorator> 标签代表对定义的请求名进行相应的装饰
详细:decorators.XML
<!-- defaultdir指定装饰器文件所在的路径 -->
<decorators defaultdir="/decorators">
<!-- 在excludes元素下指定的页面将不会由SiteMesh装饰 -->
<excludes>
<pattern>/login.jsp</pattern>
<pattern>/sessionTimeout.jsp</pattern>
<pattern>/*.action*</pattern>
<pattern>/pages/getMenu.jsp</pattern>
</excludes>
<!-- 创建名为main的装饰器,装饰器页面为main.jsp,用于装饰pattern指定的URL页面 -->
<decorator name="main" page="main.jsp">
<pattern>/*</pattern>
</decorator>
<!-- 定义一个装饰器,该装饰器默认不装饰任何页面 -->
<!-- <decorator name="panel" page="panel.jsp"/>-->
main.JSP:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<title></title>
</head>
<body>
<div id="mainContainer-back">
<!-- header -->
<%@include file="/common/backHeader.jsp"%>
<!-- leftBar -->
<div id="mainContent-back">
<div class="content">
<decorator:body/>
</div>
</div>
<!-- footer -->
<%@include file="/common/backFooter.jsp"%>
</div>
</body>
</html>
分享到:
相关推荐
JavaScript装饰器函数Decorator实例详解.docx
eventbus-cjs 是一个基于JavaScript装饰器(Decorator)实现的通信库, 支持Vue / React等常用框架, 支持node.js
装饰器(Decorator)模式 详细教程,简明易懂,非常清晰的,附带有代码示例。
1、Decorator 自定义边框 2、Adorner调整控件大小和位置
学习java 装饰模式(decorator)非常好的例子
装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数的返回结果。相对于其它...
本文实例讲述了JavaScript装饰器函数(Decorator)。分享给大家供大家参考,具体如下: 装饰器函数(Decorator)用于给对象在运行期间动态的增加某个功能,职责等。相较通过继承的方式来扩充对象的功能,装饰器显得更加...
超时装饰器安装从源代码: python setup.py install从pypi: pip install timeout-decorator用法import timeimport timeout_decorator@timeout_decorator.timeout(5)def mytest(): print("Start") for i in range(1,...
“就增加功能来说,Decorator 模式相比生成子类更为灵活” 这句话的含义是,组合比继承更灵活,当可拓展的功能很多时,继承方案会产生大量的子类,而组合可以提
C#设计模式之Decorator 装饰模式,pdf+视频教学,实例演示,易学易用~~
主要介绍了Python中设计模式之Decorator装饰器模式模式,文中详细地讲解了装饰对象的相关加锁问题,需要的朋友可以参考下
Nuxt属性装饰器 方便的ES / TypeScript装饰器,用于Nuxt中的类样式Vue组件(基于)以及(基于 )和Vuex(基于) 该库完全依赖于 。 执照 麻省理工学院执照 安装 安装非常容易 npm i -S nuxt-property-decorator ...
装饰器的运用是Python编程中的一项高级技巧,这里我们由浅入深,整理了12步入门Python中的decorator装饰器使用方法,需要的朋友可以参考下
20-装饰器使用_Decorator
C#面向对象设计模式 Decorator 装饰模式 视频讲座下载
主要介绍了Python装饰器(decorator)定义与用法,结合具体实例形式详细分析了Python装饰器的概念、功能及相关使用技巧,需要的朋友可以参考下
demo python使用装饰器(Decorator)的方式实现单例模式 functools.wraps 则可以将原函数对象的指定属性复制给包装函数对象, 默认有 __module__、__name__、__doc__,或者通过参数选择
l 具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类l 装饰角色(Decorator):持有一个构件(Component)对象的