SiteMesh 全部標(biāo)簽
Posted on 2010-05-11 22:29 Gavin.lee 閱讀(425) 評(píng)論(0) 編輯 收藏 所屬分類: SiteMesh 頁面裝飾組件1.Decorator Tags 被用于建立裝飾器頁面.
<decorator:head />
<decorator:body />
<decorator:title />
<decorator:getProperty />
<decorator:usePage />
2.Page Tags 被用于從原始內(nèi)容頁面訪問裝飾器.
<page:applyDecorator />
<page:param/>
<decorator:head />
插入原始頁面(被包裝頁面)的head標(biāo)簽中的內(nèi)容(不包括head標(biāo)簽本身)。
<decorator:body />
插入原始頁面(被包裝頁面)的body標(biāo)簽中的內(nèi)容。
<decorator:title [ default="..." ] />
插入原始頁面(被包裝頁面)的title標(biāo)簽中的內(nèi)容,還可以添加一個(gè)缺省值。
例:
/_decorator/main.jsp中 (裝飾器頁面): <title><decorator:title default="卻省title-hello" /> - 附加標(biāo)題</title>
/aaa.jsp中 (原始頁面):<title>aaa頁面</title>
訪問/aaa.jsp的結(jié)果:<title>aaa頁面 - 附加標(biāo)題</title>
<decorator:getProperty property="..." [ default="..." ] [ writeEntireProperty="..." ]/>
在標(biāo)簽處插入原始頁面(被包裝頁面)的原有的標(biāo)簽的屬性中的內(nèi)容,還可以添加一個(gè)缺省值。
sitemesh文檔中的例子很好理解:
The decorator: <body bgcolor="white"<decorator:getProperty property="body.onload" writeEntireProperty="true" />>
The undecorated page: <body onload="document.someform.somefield.focus();">
The decorated page: <body bgcolor="white" onload="document.someform.somefield.focus();">
注意,writeEntireProperty="true"會(huì)在插入內(nèi)容前加入一個(gè)空格。
<decorator:usePage id="..." />
象jsp頁面中的<jsp:useBean>標(biāo)簽一樣,可以使用被包裝為一個(gè)Page對(duì)象的頁面。 (懶的用)
例:可用<decorator:usePage id="page" /> :<%=page.getTitle()%>達(dá)到<decorator:title/>的訪問結(jié)果。
<page:applyDecorator name="..." [ page="..." title="..." ] >
<page:param name="..."> ... </page:param>
<page:param name="..."> ... </page:param>
</page:applyDecorator>
應(yīng)用包裝器到指定的頁面上,一般用于被包裝頁面中主動(dòng)應(yīng)用包裝器。這個(gè)標(biāo)簽有點(diǎn)不好理解,我們來看一個(gè)例子:
包裝器頁面 /_decorators/panel.jsp:<p><decorator:title /></p> ... <p><decorator:body /></p>
并且在decorators.xml中有<decorator name="panel" page="panel.jsp"/>
一個(gè)公共頁面,即將被panel包裝:/_public/date.jsp:
... <%=new java.util.Date()%> ...<decorator:getProperty property="myEmail" />
被包裝頁面 /page.jsp :
<title>page的應(yīng)用</title>
.....
<page:applyDecorator name="panel" page="/_public/date.jsp" >
<page:param name="myEmail"> chen_p@neusoft.com </page:param>
</page:applyDecorator>
最后會(huì)是什末結(jié)果呢?除了/page.jsp會(huì)被默認(rèn)的包裝頁面包裝上header,footer外,page.jsp頁面中還內(nèi)嵌了date.jsp頁面,并且此date.jsp頁面還會(huì)被panel.jsp包裝為一個(gè)title加body的有2段的頁面,第1段是date.jsp的title,第2段是date.jsp的body內(nèi)容。
另外,page:applyDecorator中包含的page:param標(biāo)簽所聲明的屬性值還可以在包裝頁面中用decorator:getProperty標(biāo)簽訪問到。