核心思想:保留 Struts Controller 與 Model,視圖層改用 XSLT Servlet + XSLT 樣式表。

遞歸內省 Bean 屬性(基本型別或 Collection),建立 DOM 結構。範例:
<page name="TestForm">
<request>
<TestForm>
<testString>My Test String</testString>
<testList>
<item>One</item>
<item>Two</item>
<item>Three</item>
</testList>
</TestForm>
</request>
</page>

<xsl:template match="page">
<h2>Please enter some text and submit</h2>
<form name="testForm" method="get" action="result">
<input type="text" name="testString" value="{request/TestForm/testString}"/>
<select name="outSelect">
<xsl:for-each select="request/TestForm/testList/item">
<option><xsl:value-of select="."/></option>
</xsl:for-each>
</select>
<input type="submit" value="Submit"/>
</form>
</xsl:template>
輸出標準 XHTML,元素名可預測,樣式表編寫直觀。
| 優勢 | 說明 |
|---|---|
| 業務與表現徹底分離 | XSLT 樣式表無法輕易植入 Java 邏輯(擴展函數無移植性),強制分離 |
| 標準技術棧 | XPath/XSLT 為 W3C 標準,功能超越 Struts 標籤庫,支援函數、遞歸、條件判斷 |
| 國際化機制現代化 | 資源自動放入 DOM,依語系動態切換樣式表,非 Java ResourceBundle |
| 錯誤處理一體化 | ActionError 序列化入 DOM,樣式表依錯誤類型決定顯示方式 |
| 多格式輸出 | 同一 XML 來源,套用不同樣式表產出 HTML 3.2/4.0、XHTML、WML、PDF、SVG、CSV... |
| 版面與風格分離 | 樣式表可模組化:內容樣式表定義資料結構,版面樣式表定義表格樣式,互不干擾 |
struts-config.xml 工作流控制在 Model 2x 中弱化,需自行擴充Model 2x 以 XML/XSLT 強化 Struts 視圖層,實現更純粹的 MVC 分離、標準化技術棧、多通道輸出與敏捷開發。對追求架構整潔、跨裝置輸出的團隊極具吸引力。