Ah, this appears to be a known issue.  Please see WW-3330 at 
https://issues.apache.org/jira/secure/IssueNavigator.jspa?reset=true&mode=hide&pid=12311041&sorter/order=DESC&sorter/field=priority&resolution=-1&component=12313331

This is a fairly major road block to upgrade.



-----Original Message-----
From: Maurizio Cucchiara [mailto:maurizio.cucchi...@gmail.com]
Sent: Monday, October 04, 2010 2:54 PM
To: Struts Users Mailing List
Subject: Re: Freemarker sitemesh decorator does not render struts 2.2.1 action 
tag

You're right I didn't see the executeResult attribute in your action directive.
It's look like you find a new bug out.
You should add a new issue: https://issues.apache.org/jira/browse/WW

Maurizio Cucchiara

2010/10/4 Derrick Koes <derrick_k...@skillsoft.com>:
> Why does the JSP version behave differently?  I.e. no reference to the 
> property is necessary to get the action tag result output.  This difference 
> isn't clear anywhere in documentation AFAIK.
>
> Also, I want the output of the entire action result.  My result may be 
> considerably more complex than a simple date object.
>
> Thanks,
> Derrick
>
>
>
> From: Maurizio Cucchiara [mailto:maurizio.cucchi...@gmail.com]
> Sent: Monday, October 04, 2010 11:33 AM
> To: Struts Users Mailing List
> Subject: Re: Freemarker sitemesh decorator does not render struts 2.2.1 
> action tag
>
> Hi,
> I think this is the expected result. In fact the follow line:
> <@s.action var="dateAction" name="date" namespace="/" executeResult="true" />
> initializes a dateAction reference (var) to the invoked action.
> If you want to see your date you need to add this row
> <@s.property value="#dateAction.date" />
>
> Did it work in that way before?
>
> Maurizio Cucchiara
>
> 2010/10/3 Derrick Koes 
> <derrick_k...@skillsoft.com<mailto:derrick_k...@skillsoft.com>>
> I am upgrading to struts 2.2.1, but realized there is an issue with 
> freemarker sitemesh decorators which use the struts 2 action tag.  This is a 
> regression from 2.1.8.1.
>
> To demonstrate the issue with a reasonably simple example I deployed the 
> struts2-showcase-2.2.1 sample application.
>
> Then, ensuring the web.xml is set up to handle freemarker sitemesh 
> decorators, I created a 'main.ftl' decorator based on the main.jsp decorator 
> included in the app.  I modified the decorators.xml to use the main.ftl 
> rather than the main.jsp decorator and restarted the app.  Note that the 
> "date" action in the action tag within the freemarker sitemesh decorator runs 
> as the variable usage for the year in the copyright line is correct.  
> However, notice that the header is missing the date (as compared to the jsp 
> version).
>
> Any help in further understanding or resolving the issue is appreciated.
>
> Below are the relevant files inlined (also attached).
>
> web.xml:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <web-app id="WebApp_9" version="2.4"
>                xmlns="http://java.sun.com/xml/ns/j2ee";
>                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>                xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
> http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd";>
>
>    <display-name>Struts Showcase Application</display-name>
>
>    <filter>
>        <filter-name>struts-prepare</filter-name>
>        
> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
>        <init-param>
>                <param-name>actionPackages</param-name>
>                <param-value>org.apache.struts2.showcase.person</param-value>
>        </init-param>
>    </filter>
>
>    <filter>
>        <filter-name>struts-execute</filter-name>
>        
> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
>    </filter>
>
>
>   <filter>
>       <filter-name>sitemesh</filter-name>
>       
> <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
>   </filter>
>
>    <filter-mapping>
>        <filter-name>struts-prepare</filter-name>
>        <url-pattern>/*</url-pattern>
>    </filter-mapping>
>
>    <filter-mapping>
>        <filter-name>sitemesh</filter-name>
>        <url-pattern>/*</url-pattern>
>    </filter-mapping>
>
>    <filter-mapping>
>        <filter-name>struts-execute</filter-name>
>        <url-pattern>/*</url-pattern>
>    </filter-mapping>
>
>    <listener>
>        
> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
>    </listener>
>
>    <listener>
>        <listener-class>
>          org.apache.myfaces.webapp.StartupServletContextListener
>        </listener-class>
>    </listener>
>
>    <listener>
>        <listener-class>
>            org.apache.struts2.tiles.StrutsTilesListener
>        </listener-class>
>    </listener>
>
>    <!-- Chat Example in Showcase -->
>    <listener>
>                <listener-class>
>                  org.apache.struts2.showcase.chat.ChatSessionListener
>                </listener-class>
>    </listener>
>
>    <listener>
>        
> <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
>    </listener>
>
>    <!-- SNIPPET START: dwr -->
>
>    <servlet>
>        <servlet-name>dwr</servlet-name>
>        <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
>        <init-param>
>            <param-name>debug</param-name>
>            <param-value>true</param-value>
>        </init-param>
>    </servlet>
>
>                <!-- JavaServer Faces Servlet Configuration, not used directly 
> -->
>                <servlet>
>                <servlet-name>faces</servlet-name>
>                    
> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
>                <load-on-startup>1</load-on-startup>
>                </servlet>
>                                <servlet>
>                <servlet-name>JspSupportServlet</servlet-name>
>                
> <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
>                <load-on-startup>1</load-on-startup>
>                </servlet>
>
>      <!-- Sitemesh Freemarker and Velocity Decorator Servlets. Shares 
> configuration with Struts.-->
>    <servlet>
>        <servlet-name>sitemesh-freemarker</servlet-name>
>        
> <servlet-class>org.apache.struts2.sitemesh.FreemarkerDecoratorServlet</servlet-class>
>        <init-param>
>            <param-name>default_encoding</param-name>
>            <param-value>UTF-8</param-value>
>        </init-param>
>        <load-on-startup>1</load-on-startup>
>    </servlet>
>
>    <servlet>
>        <servlet-name>sitemesh-velocity</servlet-name>
>        
> <servlet-class>org.apache.struts2.sitemesh.VelocityDecoratorServlet</servlet-class>
>        <init-param>
>            <param-name>default_encoding</param-name>
>            <param-value>UTF-8</param-value>
>        </init-param>
>        <load-on-startup>1</load-on-startup>
>    </servlet>
>
>
>                <!-- JavaServer Faces Servlet Mapping, not called directly -->
>    <servlet-mapping>
>        <servlet-name>faces</servlet-name>
>        <url-pattern>*.action</url-pattern>
>                </servlet-mapping>
>
>    <servlet-mapping>
>        <servlet-name>dwr</servlet-name>
>        <url-pattern>/dwr/*</url-pattern>
>    </servlet-mapping>
>
>    <servlet-mapping>
>        <servlet-name>sitemesh-freemarker</servlet-name>
>        <url-pattern>*.ftl</url-pattern>
>    </servlet-mapping>
>
>    <servlet-mapping>
>        <servlet-name>sitemesh-velocity</servlet-name>
>        <url-pattern>*.vm</url-pattern>
>    </servlet-mapping>
>
>    <!-- END SNIPPET: dwr -->
>
>    <!-- SNIPPET START: example.velocity.filter.chain
>        <filter>
>            <filter-name>struts-cleanup</filter-name>
>            
> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
>        </filter>
>        <filter>
>            <filter-name>sitemesh</filter-name>
>            
> <filter-class>org.apache.struts2.sitemesh.VelocityPageFilter</filter-class>
>        </filter>
>        <filter>
>            <filter-name>struts</filter-name>
>            
> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
>        </filter>
>
>        <filter-mapping>
>            <filter-name>struts-cleanup</filter-name>
>            <url-pattern>/*</url-pattern>
>        </filter-mapping>
>        <filter-mapping>
>            <filter-name>sitemesh</filter-name>
>            <url-pattern>/*</url-pattern>
>        </filter-mapping>
>        <filter-mapping>
>            <filter-name>struts</filter-name>
>            <url-pattern>/*</url-pattern>
>        </filter-mapping>
>    END SNIPPET: example.velocity.filter.chain -->
>
>    <!-- SNIPPET START: example.freemarker.filter.chain
>    <filter>
>        <filter-name>struts-cleanup</filter-name>
>        
> <filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
>    </filter>
>    <filter>
>        <filter-name>sitemesh</filter-name>
>        
> <filter-class>org.apache.struts2.sitemesh.FreeMarkerPageFilter</filter-class>
>    </filter>
>    <filter>
>        <filter-name>struts</filter-name>
>        
> <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
>    </filter>
>
>    <filter-mapping>
>        <filter-name>struts-cleanup</filter-name>
>        <url-pattern>/*</url-pattern>
>    </filter-mapping>
>    <filter-mapping>
>        <filter-name>sitemesh</filter-name>
>        <url-pattern>/*</url-pattern>
>    </filter-mapping>
>    <filter-mapping>
>        <filter-name>struts</filter-name>
>        <url-pattern>/*</url-pattern>
>    </filter-mapping>
>    END SNIPPET: example.freemarker.filter.chain -->
>
>    <welcome-file-list>
>        <welcome-file>index.jsp</welcome-file>
>        <welcome-file>default.jsp</welcome-file>
>        <welcome-file>index.html</welcome-file>
>    </welcome-file-list>
>
> </web-app>
>
>
> decorators.xml:
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
>
> <decorators defaultdir="/WEB-INF/decorators">
>    <!-- Any urls that are excluded will never be decorated by Sitemesh -->
>    <excludes>
>        <pattern>/debug.jsp</pattern>
>        <pattern>/styles/*</pattern>
>        <pattern>/scripts/*</pattern>
>        <pattern>/images/*</pattern>
>        <pattern>/dojo/*</pattern>
>        <pattern>/struts/*</pattern>
>        <pattern>/ajax/AjaxResult*</pattern>
>        <pattern>/AjaxTest.action</pattern>
>        <pattern>/ajax/remoteforms/AjaxRemoteForm.action</pattern>
>        <pattern>/tags/ui/ajax/*</pattern>
>        <pattern>/chat/ajax/*</pattern>
>        <pattern>/hangman/ajax/*</pattern>
>        <pattern>/nodecorate/*</pattern>
>    </excludes>
>
>    <decorator name="main" page="main.ftl">
>        <pattern>/*</pattern>
>    </decorator>
>    <!--<decorator name="panel" page="panel.jsp"/>-->
>    <!--<decorator name="dashedBox" page="dashedBox.jsp"/>-->
>    <!--<decorator name="printable" page="printable.jsp"/>-->
> </decorators>
>
>
> main.ftl decorator:
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
>
> <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
> <head>
>    <title>${title}</title>
>    <link href="<@s.url value='/styles/main.css' encode='false' 
> includeParams='none'/>" rel="stylesheet" type="text/css" media="all"/>
>    ${head}
> </head>
>
> <body id="page-home">
>
>
> <div id="page">
>    <div id="outer-header">
>        <div id="header" class="clearfix">
>            <div id="branding">
>                <h1 class="title">Struts Showcase</h1>
>                <@s.action var="dateAction" name="date" namespace="/" 
> executeResult="true" />
>            </div><!-- end branding -->
>
>            <div id="search">
>                <img src="<@s.url value='/images/struts-power.gif' 
> encode='false' includeParams='none'/>" alt="Powered by Struts"/>
>            </div><!-- end search -->
>
>            <hr/>
>            <div style="clear: both;"></div>
>        </div>
>    </div><!-- end header -->
>
>    <div id="content" class="clearfix">
>        <div id="nav">
>            <div class="wrapper">
>                <h2 class="accessibility">Navigation</h2>
>                <ul class="clearfix">
>                    <li><@s.a value="/showcase.jsp">Home</@s.a></li>
>                    <li><@s.a value="/ajax/index.jsp">Ajax</@s.a></li>
>                    <li><@s.a value="/chat/index.jsp">Ajax Chat</@s.a></li>
>                    <li><@s.a action="actionChain1!input" 
> namespace="/actionchaining"  includeParams="none">Action Chaining</@s.a></li>
>                    <li><@s.a action="index" namespace="/config-browser" 
> includeParams="none">Config Browser</@s.a></li>
>                    <li><@s.a 
> value="/conversion/index.jsp">Conversion</@s.a></li>
>                    <li><@s.a value="/empmanager/index.jsp">CRUD</@s.a></li>
>                    <li><@s.a value="/wait/index.jsp">Execute & 
> Wait</@s.a></li>
>                    <li><@s.a value="/filedownload/index.jsp">File 
> Download</@s.a></li>
>                    <li><@s.a value="/fileupload/index.jsp">File 
> Upload</@s.a></li>
>                    <li><@s.a 
> value="/freemarker/index.jsp">Freemarker</@s.a></li>
>                    <li><@s.a action="hangmanMenu" 
> namespace="/hangman">Hangman</@s.a></li>
>                    <li><@s.a value="/jsf/index.jsp">JavaServer 
> Faces</@s.a></li>
>                    <li><@s.a value="/tags/index.jsp">Tags</@s.a></li>
>                    <li><@s.a value="/tiles/index.action">Tiles</@s.a></li>
>                    <li><@s.a value="/token/index.jsp">Token</@s.a></li>
>                    <li><@s.a 
> value="/validation/index.jsp">Validation</@s.a></li>
>                    <li><@s.a value="/interactive/index.jsp">Interactive 
> Demo</@s.a></li>
>                    <li><@s.a value="/person/index.jsp">Person 
> Manager</@s.a></li>
>                    <li><@s.a value="/integration/editGangster">Struts 1 
> Integration</@s.a></li>
>                    <li class="last"><@s.a value="/help.jsp">Help</@s.a></li>
>                </ul>
>            </div>
>            <hr/>
>
>        </div><!-- end nav -->
>
>        ${body}
>
>    </div><!-- end content -->
>
>    <div id="footer" class="clearfix">
>        <p>Copyright &copy; 2003-<@s.property value="#dateAction.now.year + 
> 1900" /> The Apache Software Foundation.</p>
>        <@s.hidden name="project-name" value="Struts 2" />
>    </div><!-- end footer -->
>    <p/>
>
> </div><!-- end page -->
>
> </body>
> </html>
>
>
> JSP decorator output:
>
> [cid:image001.png@01CB62FF.E7CBB260]
>
> FTL decorator output:
>
> [cid:image002.png@01CB6300.322DE710]
>
> Derrick Koes
> Principal Software Engineer
> SkillSoft<http://www.skillsoft.com/>
> 300 Innovative Way, Suite 201
> Nashua, NH 03062
> Tel: 603-821-3264
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: 
> user-unsubscr...@struts.apache.org<mailto:user-unsubscr...@struts.apache.org>
> For additional commands, e-mail: 
> user-h...@struts.apache.org<mailto:user-h...@struts.apache.org>
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@struts.apache.org
For additional commands, e-mail: user-h...@struts.apache.org

Reply via email to