struts2之整合sitemesh(更复杂的装饰器页面)
----------
下面将在装饰器页面中使用其他装饰器,也就是装饰器页面里嵌套装饰器页面,通过这种方式可以提供更高程度的解耦。
在装饰器页面中导入其他装饰器页面使用如下标签:
<page:applyDecorator.../>:在该页面直接使用装饰器。
看下面的装饰器页面代码实例 :
从上面页面代码中可以看出,上面页面一样只使用了<decorator:title/>标签来导入被装饰页面的标题部分,而且导入被装饰页面标题时,并不一定是导入到装饰器页面的title部分,可以导入到任何部分。
除此之外,上面装饰器页面还使用了两次<page:applyDecorator.../>标签,该标签用于直接将目标页面导入装饰器页面。导入目标页面时,使用panel装饰器来装饰该页面,这意味着,该装饰器页面还依赖于另一个装饰器:panel。
panel装饰器页面的代码如下:
因为上面页面定义了两个装饰器页面,因此也需要使用decorators.xml文件来定义装饰器页面。decorators.xml文件的代码如下(这个文件应放在/WEB-INF/下面):
上面的配置文件定义了两个装饰器:main和panel,其中main装饰器默认装饰web应用根路径下的所有页面:panel装饰器则默认不装饰任何页面。
在装饰器页面main.jsp中导入两个页面:book.html和link.html,这两个页面放在web应用的根路径下,是两个静态的HTML页面。