在網頁上最常用來處理版面的是表格,透過將表格邊框設定為0,可以用它來切割版面,並在當中置入內容,然而一大堆版面配置的標籤將與內容夾雜在一起,如果以後要更改內容或版面配置,會是一個麻煩。
在視窗程式的設計中存在有版面管理員(Layout Manager)機制,我們可以選擇一個版面管理機制,之後直接在視窗容器上添加元件而不用處理版面配置細節,而由版面管理員來自己處理元件的版面配置, 如果想要改變版面配置,則只要直接更換版面管理員,所有的元件將自動依新的管理員而重新配置版面。
Tiles提供一個類似於視窗程式版面管理的機制,透過定義檔,您可以定義版面配置,以及當中所要置入的內容網頁,內容與版面配置的標籤可以分離,您可以隨時抽換每一個內容網頁,也可以重用每一個版面配置。
Tiles隨著Struts一同發佈,您可以直接從struts-blank中開始設定,當中已經包括了Tiles必要的檔案與設定,如果您要自行設定 Tiles,您必須要有commons-beanutils.jar、commons-logging.jar、commons- collections.jar、commons-digester.jar、struts.jar四個檔案在您的/WEB-INF/lib目錄中,並且 在struts-config.xml中加入以下的內容:
- struts-config.xml
...
<plug-in className="org.apache.struts.tiles.TilesPlugin" >
<set-property property="definitions-config"
value="/WEB-INF/conf/tiles-defs.xml" />
<set-property property="moduleAware"
value="true" />
<set-property property="definitions-parser-validate"
value="true" />
</plug-in>
...
在Struts 1.1後,您只要使用 Plugin 就可以掛上Tiles的功能。definitions-config屬性中的tiles-defs.xml是Tiles的定義檔,Tiles提供了一個處 理請求的 RequestProcessor,可以進行一些forward與include的額外動作:
<controller
processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
您可以參考struts-blank中的設定,將上面兩個設定加入struts-config.xml中;最後,您要將 struts-tiles.tld放置在/WEB-INF/tld下,並在web.xml中定義,這樣可以使用Tiles標籤,例如在web.xml中是 這麼設定的:
- web.xml
...
<taglib>
<taglib-uri>/tags/struts-tiles</taglib-uri>
<taglib-location>
/WEB-INF/tld/struts-tiles.tld
</taglib-location>
</taglib>
...
完成以上之後,您就可以開始使用Tiles的功能了,Tiles的定義檔可以使用XML或JSP頁面來完成。