rendered paste bodyweb.xml
<filter>
<filter-name>sitemesh</filter-name>
<filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilter</filter-class>
</filter>
decorators.xml
<decorators defaultdir="/WEB-INF/decorators">
<excludes>
<!-- Exclude Struts2 Stuff -->
<pattern>/dojo/*</pattern>
<pattern>/struts/*</pattern>
<pattern>/dwr/*</pattern>
<pattern>/js/*</pattern>
<pattern>/img/*</pattern>
<pattern>/images/*</pattern>
<pattern>/themes/*</pattern>
</excludes>
<!--
<decorator name="default" page="main.jsp">
<pattern>/*</pattern>
</decorator>
-->
<decorator name="default" page="main.ftl">
<pattern>/*</pattern>
</decorator>
</decorators>
sitemesh.xml
<sitemesh>
<property name="decorators-file" value="/WEB-INF/decorators.xml" />
<excludes file="${decorators-file}" />
<page-parsers>
<parser content-type="text/html"
class="com.opensymphony.module.sitemesh.parser.HTMLPageParser" />
</page-parsers>
<decorator-mappers>
<mapper
class="com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper">
<param name="config" value="${decorators-file}" />
</mapper>
</decorator-mappers>
</sitemesh>
dans le main.ftl :
${title}
${body}