diff --git a/plugins/portlet-tiles/pom.xml b/plugins/portlet-tiles/pom.xml
index 9e9a81faf..8b710b206 100644
--- a/plugins/portlet-tiles/pom.xml
+++ b/plugins/portlet-tiles/pom.xml
@@ -44,7 +44,7 @@
org.apache.tiles
- tiles-portlet
+ tiles-request-portlet
javax.servlet
diff --git a/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java b/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java
index 83fcd4e36..f12274b39 100644
--- a/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java
+++ b/plugins/portlet-tiles/src/main/java/org/apache/struts2/views/tiles/PortletTilesResult.java
@@ -22,22 +22,20 @@
package org.apache.struts2.views.tiles;
import com.opensymphony.xwork2.ActionInvocation;
-import freemarker.template.TemplateException;
-import org.apache.struts2.ServletActionContext;
-import org.apache.struts2.result.ServletDispatcherResult;
import org.apache.struts2.portlet.PortletConstants;
import org.apache.struts2.portlet.context.PortletActionContext;
+import org.apache.struts2.result.ServletDispatcherResult;
import org.apache.tiles.TilesContainer;
import org.apache.tiles.TilesException;
import org.apache.tiles.access.TilesAccess;
-import org.apache.tiles.portlet.context.PortletUtil;
+import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.Request;
+import org.apache.tiles.request.portlet.RenderPortletRequest;
import javax.portlet.ActionResponse;
-import javax.portlet.PortletException;
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
+import javax.portlet.PortletContext;
+import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
import java.util.Map;
/**
@@ -68,12 +66,15 @@ public class PortletTilesResult extends ServletDispatcherResult {
protected void executeRenderResult(String location) throws TilesException {
setLocation(location);
- TilesContainer container = PortletUtil.getContainer(PortletActionContext.getPortletContext());
+ PortletContext portletContext = PortletActionContext.getPortletContext();
+ RenderRequest request = PortletActionContext.getRenderRequest();
+ RenderResponse response = PortletActionContext.getRenderResponse();
- HttpServletRequest request = ServletActionContext.getRequest();
- HttpServletResponse response = ServletActionContext.getResponse();
+ TilesContainer container = getCurrentContainer(request, portletContext);
+ ApplicationContext applicationContext = container.getApplicationContext();
+ Request currentRequest = new RenderPortletRequest(applicationContext, portletContext, request, response);
- container.render(location, request, response);
+ container.render(location, currentRequest);
}
protected void executeActionResult(String location, ActionInvocation invocation) {
@@ -87,4 +88,27 @@ public class PortletTilesResult extends ServletDispatcherResult {
res.setRenderParameter(PortletConstants.MODE_PARAM, PortletActionContext.getRequest().getPortletMode().toString());
}
+ protected TilesContainer getCurrentContainer(javax.portlet.PortletRequest request, PortletContext context) {
+
+ TilesContainer container = (TilesContainer) request.getAttribute(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME);
+
+ if (container == null) {
+ container = getContainer(context);
+ request.setAttribute(TilesAccess.CURRENT_CONTAINER_ATTRIBUTE_NAME, container);
+ }
+
+ return container;
+ }
+
+ protected TilesContainer getContainer(PortletContext context) {
+ return getContainer(context, TilesAccess.CONTAINER_ATTRIBUTE);
+ }
+
+ protected TilesContainer getContainer(PortletContext context, String key) {
+ if (key == null) {
+ key = TilesAccess.CONTAINER_ATTRIBUTE;
+ }
+ return (TilesContainer) context.getAttribute(key);
+ }
+
}
diff --git a/pom.xml b/pom.xml
index 0955de923..14360e48e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -89,6 +89,7 @@
3.3
5.0.2
3.0.5
+ 1.0.6
2.3
@@ -620,8 +621,8 @@
org.apache.tiles
- tiles-portlet
- ${tiles.version}
+ tiles-request-portlet
+ ${tiles-request.version}
org.apache.tiles