以下列著全部標(biāo)簽:
<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)容,還可以添加一個缺省值。
例:
/_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)容,還可以添加一個缺省值。
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"會在插入內(nèi)容前加入一個空格。
<decorator:usePage id="..." />
象jsp頁面中的<jsp:useBean>標(biāo)簽一樣,可以使用被包裝為一個Page對象的頁面。 (懶的用)
例:可用<decorator:usePage id="page" /> :<%=page.getTitle()%>達到<decorator:title/>的訪問結(jié)果。
<page:applyDecorator name="..." [ page="..." title="..." ] >
<page:param name="..."> ... </page:param>
<page:param name="..."> ... </page:param>
</page:applyDecorator>
應(yīng)用包裝器到指定的頁面上,一般用于被包裝頁面中主動應(yīng)用包裝器。這個標(biāo)簽有點不好理解,我們來看一個例子:
包裝器頁面 /_decorators/panel.jsp:<p><decorator:title /></p> ... <p><decorator:body /></p>
并且在decorators.xml中有<decorator name="panel" page="panel.jsp"/>
一個公共頁面,即將被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>
最后會是什末結(jié)果呢?除了/page.jsp會被默認的包裝頁面包裝上header,footer外,page.jsp頁面中還內(nèi)嵌了date.jsp頁面,并且此date.jsp頁面還會被panel.jsp包裝為一個title加body的有2段的頁面,第1段是date.jsp的title,第2段是date.jsp的body內(nèi)容。
另外,page:applyDecorator中包含的page:param標(biāo)簽所聲明的屬性值還可以在包裝頁面中用decorator:getProperty標(biāo)簽訪問到。
|