Hi Derrick, I just upload a patch that should fix the problem you have mentioned.
2010/10/4 Derrick Koes <derrick_k...@skillsoft.com>: > 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 © 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 > > -- Maurizio Cucchiara --------------------------------------------------------------------- To unsubscribe, e-mail: user-unsubscr...@struts.apache.org For additional commands, e-mail: user-h...@struts.apache.org