直接訪問 JSP 會被 Sitemesh3 裝飾,但 SpringMVC return "viewName" 轉發後頁面無裝飾。
Sitemesh3 預設攔截 **請求路徑**,而非內部轉發的 JSP 路徑。配置中若寫的是 <pattern>/WEB-INF/views/*.jsp</pattern>,轉發請求的路徑仍是 Controller Mapping(如 /user/list),不匹配而跳過裝飾。
在 sitemesh3.xml 中配置 **Controller 請求路徑模式**,而非 JSP 物理路徑:
<mapping path="/user/*" decorator="/decorators/main.jsp"/>
<mapping path="/admin/*" decorator="/decorators/admin.jsp"/>
/user/list 確認裝飾生效。web.xml 中 sitemesh Filter 是否設定 <dispatcher>REQUEST</dispatcher><dispatcher>FORWARD</dispatcher>。