Author: lukaszlenart Date: Tue Oct 29 07:01:49 2013 New Revision: 1536598 URL: http://svn.apache.org/r1536598 Log: WW-4044 Solves problem with infinitive loop when used with <s:action/> tag and attribute executeResult is set to "true"
Modified: struts/struts2/trunk/plugins/tiles3/src/main/java/org/apache/struts2/views/tiles/TilesResult.java Modified: struts/struts2/trunk/plugins/tiles3/src/main/java/org/apache/struts2/views/tiles/TilesResult.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/tiles3/src/main/java/org/apache/struts2/views/tiles/TilesResult.java?rev=1536598&r1=1536597&r2=1536598&view=diff ============================================================================== --- struts/struts2/trunk/plugins/tiles3/src/main/java/org/apache/struts2/views/tiles/TilesResult.java (original) +++ struts/struts2/trunk/plugins/tiles3/src/main/java/org/apache/struts2/views/tiles/TilesResult.java Tue Oct 29 07:01:49 2013 @@ -59,16 +59,23 @@ public class TilesResult extends Servlet @Override public void doExecute(String location, ActionInvocation invocation) throws Exception { - setLocation(location); ServletContext context = ServletActionContext.getServletContext(); - ApplicationContext applicationContext = ServletUtil.getApplicationContext(context); - TilesContainer container = TilesAccess.getContainer(applicationContext); - HttpServletRequest request = ServletActionContext.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); + ApplicationContext applicationContext = ServletUtil.getApplicationContext(context); ServletRequest servletRequest = new ServletRequest(applicationContext, request, response); + + TilesContainer container = initTilesContainer(applicationContext, servletRequest); + + container.startContext(servletRequest); container.render(location, servletRequest); } + protected TilesContainer initTilesContainer(ApplicationContext applicationContext, ServletRequest servletRequest) { + TilesContainer container = TilesAccess.getContainer(applicationContext); + TilesAccess.setCurrentContainer(servletRequest, container); + return container; + } + }