After upgrading from Struts 18.104.22.168 to 22.214.171.124, we observed that if a Sitemesh Freemarker decorator used <@s.action> to include another action, the action's Freemarker view output is not rendered.
This is identical to what
WW-3330 describes, which is reported fixed in 2.2.3.
The documentation (http://struts.apache.org/release/2.3.x/docs/sitemesh-plugin.html) specifies to use com.opensymphony.sitemesh.webapp.SiteMeshFilter. The fix in
WW-3330 applies to org.apache.struts2.sitemesh.FreemarkerPageFilter, a sub-class of SiteMeshFilter. Using SiteMeshFilter as the documentation specifies, WW-3330 does not appear resolved.
If I change my web.xml to use FreemarkerPageFilter instead of SiteMeshFilter, the
WW-3330 problem is resolved, but now <@s.action> from a Freemarker template that is not a Sitemesh decorator over-writes any previous output.
Steps to reproduce:
With a web app that uses the FreemarkerPageFilter instead of SiteMeshFilter, create a Freemarker template that has 3 lines:
1. A standard line of static text
2. An <@s.action> reference.
3. More static text.
Observed behavior: Text before the output of the <@s.action> call does not get to the client.
Expected behavior: All of the output gets to the client.
Judging by the number of configuration changes (servlets and filters) in 2.2, it is possible that I have web.xml configured incorrectly. If that is the case, feel free to throw your tomatoes But I have triple checked and at this point I am wondering if this is a regression from
If needed, I can try to put together a minimal web app to reproduce the problem.