我正在使用帶有2.0.6插件的Struts2框架。在我的web應用程序,我有一個「基地」的佈局,它由一個頁眉,頁腳和頁面內容:Tiles插件中的動態繼承Struts2
<definition name="sharedLayout" template="/shared/jsp/Base.jsp">
<put-attribute name="pageHeader" value="/shared/jsp/Header.jsp"/>
<put-attribute name="pageContent" value=""/>
<put-attribute name="pageFooter" value="/shared/jsp/Footer.jsp"/>
</definition>
對於某些網頁,這就夠了。但是,我也有幾個頁面都使用相同的子標題。對付這種最簡單的方法是創建一個額外的瓷磚定義:
<definition name="sharedLayoutExtended" template="/shared/jsp/BaseExtended.jsp">
<put-attribute name="pageHeader" value="/shared/jsp/Header.jsp"/>
<put-attribute name="pageSubHeader" value="/shared/jsp/SubHeader.jsp"/>
<put-attribute name="pageContent" value=""/>
<put-attribute name="pageFooter" value="/shared/jsp/Footer.jsp"/>
</definition>
然而,這有我重複最Base.jsp代碼(和base.css,基地的主要缺點。 js ...)和BaseExtended.jsp。更難維護和發展!
我試着總是使用BaseExtended,然後使用屬性忽略這些網頁誰沒有子頭:
<tiles:insertAttribute name="pageSubHeader" ignore="true" />
雖然這個作品,裏面有一些BaseExtended元素只應存在如果該屬性是acutally存在。例如,如果有一個subheader,那麼在jsp的其他地方應該有一個包含一些東西的div。
BaseExtended.jsp:因爲在之間的其他元素我無法將subheader.jsp裏面添加這個特殊的div
<body>
<tiles:insertAttribute name="pageSubHeader" ignore="true" />
...some other jsp stuff...
IF subheader is actually present, then have some stuff here
ELSE have nothing here
<tiles:insertAttribute name="pageContent" />
...some other jsp stuff...
IF subheader is actually present, then have some stuff here
ELSE have OTHER stuff here
</body>
有沒有一種方法可以讓我實現這些「如果/別人的」?
這是你的問題嗎? – user23123412 2014-09-02 05:01:33