[ http://issues.apache.org/jira/browse/PB-41?page=all ]
Work on PB-41 started by Ate Douma. > Tiles Context gets lost "Struts Bridge - error with tiles" > ---------------------------------------------------------- > > Key: PB-41 > URL: http://issues.apache.org/jira/browse/PB-41 > Project: Portals Bridges > Issue Type: Bug > Components: struts > Environment: Liferay 4.0 / JBoss 4.0.2 / Struts 1.2.7 / Bridges 1.0 > Reporter: James Schopp > Assigned To: Ate Douma > > There is a bug where the tiles context can get lost, and using tiles in your > struts portlet will result in an NPE. > This happened to me, and after googling the problem, it appears that it had > also happened to Max Hammers, who also posted a patch for the error. After > searching jira, it apears that this issue is not being tracked yet (so that's > why I am opening this one). I manually applied the patch to my copy of the > source files (it is very simple), and it works perfectly (thanks Max!). > So, Ate et al, please apply Max's patch! > The newsgroup posting can be found at > http://mail-archives.apache.org/mod_mbox/portals-bridges-dev/200602.mbox/[EMAIL > PROTECTED] > And the patch is as follows (copy pasted from the above post) > ########################## > Index: > src/java/org/apache/portals/bridges/struts/PortletServlet.java > =================================================================== > --- > src/java/org/apache/portals/bridges/struts/PortletServlet.java > (revision 365364) > +++ > src/java/org/apache/portals/bridges/struts/PortletServlet.java > (working copy) > @@ -34,6 +34,7 @@ > import org.apache.struts.config.PlugInConfig; > import org.apache.struts.tiles.TilesPlugin; > import org.apache.struts.util.RequestUtils; > +import > org.apache.struts.taglib.tiles.ComponentConstants; > > /** > * PortletServlet > @@ -169,6 +170,13 @@ > request > > .setAttribute(Globals.ERROR_KEY, context > .getErrors()); > + log.debug("Looking for TilesContext > ..."); > + if (context.getTilesContext() != > null) { > + > request.setAttribute(ComponentConstants.COMPONENT_CONTEXT, > context.getTilesContext()); > + log.debug("TilesContext saved in > request"); > + } else > + log.debug("TilesContext not found!"); > + > RequestDispatcher dispatcher = null; > if (context.getDispatchNamed()) > dispatcher = > getServletContext().getNamedDispatcher( > Index: > src/java/org/apache/portals/bridges/struts/PortletServletRequestDispatcher.java > =================================================================== > --- > src/java/org/apache/portals/bridges/struts/PortletServletRequestDispatcher.java > (revision 365364) > +++ > src/java/org/apache/portals/bridges/struts/PortletServletRequestDispatcher.java > (working copy) > @@ -30,6 +30,8 @@ > import org.apache.struts.action.ActionForm; > import org.apache.struts.action.ActionMessages; > import org.apache.struts.config.ActionConfig; > +import org.apache.struts.tiles.ComponentContext; > +import > org.apache.struts.taglib.tiles.ComponentConstants; > > /** > * PortletServletRequestDispatcher > @@ -92,6 +94,11 @@ > > .getAttribute(Globals.MESSAGE_KEY)); > context.setErrors((ActionMessages) > request > > .getAttribute(Globals.ERROR_KEY)); > + // Store tiles context > + > context.setTilesContext((ComponentContext)request.getAttribute(ComponentConstants.COMPONENT_CONTEXT)); > + log.debug("TilesContext in > StrutsPortletRenderContext"); > + > + > if (context.getErrors() != null) > { > String originURL = > StrutsPortletURL.getOriginURL(request); > Index: > src/java/org/apache/portals/bridges/struts/StrutsPortletRenderContext.java > =================================================================== > --- > src/java/org/apache/portals/bridges/struts/StrutsPortletRenderContext.java > (revision 365364) > +++ > src/java/org/apache/portals/bridges/struts/StrutsPortletRenderContext.java > (working copy) > @@ -19,6 +19,7 @@ > > import org.apache.struts.action.ActionForm; > import org.apache.struts.action.ActionMessages; > +import org.apache.struts.tiles.ComponentContext; > > /** > * StrutsPortletRenderContext > @@ -34,6 +35,9 @@ > private boolean requestCancelled; > private ActionMessages messages; > private ActionMessages errors; > + // Tiles context > + private ComponentContext tilesContext; > + > public String getPath() > { > return path; > @@ -82,4 +86,12 @@ > { > this.errors = errors; > } > + public ComponentContext getTilesContext() > + { > + return tilesContext; > + } > + public void setTilesContext(ComponentContext > tilesContext) > + { > + this.tilesContext = tilesContext; > + } > } > ########################## -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
