Tiles 是 Struts 官方外掛,提供「模板機制」將頁面版面與內容分離。本文介紹安裝步驟、核心標籤庫宣告,並對比 <jsp:include> 與 <tiles:insert> 的異同。
<plug-in className="org.apache.struts.tiles.TilesPlugin">
<set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
</plug-in>
definitions-config 指向定義檔,多檔案以逗號分隔。tiles-defs.xml<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"https://struts.apache.org/dtds/tiles-config_1_1.dtd">
<tiles-definitions>
<definition name="def1" path="/tiles/layout1.jsp">
<put name="title" value="我的標題" />
<put name="header" value="header.jsp" />
...
</definition>
</tiles-definitions>
<%@ taglib uri="https://struts.apache.org/tags-tiles" prefix="tiles" %>
<jsp:include page="header.jsp" />
<jsp:include page="footer.jsp" />
<tiles:insert page="header.jsp" />
<tiles:insert page="footer.jsp" />
| 特性 | <jsp:include> | <tiles:insert> |
|---|---|---|
| 基本包含功能 | ✓ | ✓ |
| 模板機制(佔位符) | ✗ | ✓ |
| 定義檔集中管理屬性 | ✗ | ✓ |
| 定義繼承 | ✗ | ✓ |
| 需安裝外掛 | 否 | 是 |
結論:若僅需簡單片段包含,<jsp:include> 輕量且無額外依賴;若需版面統一、屬性集中管理、多層次復用,Tiles 提供完整解決方案。
下一篇將詳細示範如何撰寫模板頁面(佔位符設計)、使用頁面注入內容、以及透過定義檔實現大規模復用與繼承。