Hi again,
Been tracing through the code to see what the issue is (and if I can fix it quickly) and spotted the problem. I'm not sure if this is going to be problem anywhere else. quick recap of what is going on: call action in the /refdata sub app that returns a tiles-def reference, which points to a page /standardLayout.jsp the layout has reference to /refdata/showAllSchemes.do the tiles insert tag (supposedly) gets the value and inserts it into the layout page (by using pageContext.include in the tag ) - boom - invalid action mapping. The reason this is failing is that struts is not picking up the sub application during the include. we are doing include on "/refdata/showAllSchemes.do". We hit the ActionServlet, which goes through to RequestUtils.selectApplication to determine the app. *this is where it goes horribly wrong* // Acquire the path used to compute the sub-application String matchPath = request.getServletPath(); This gets however not "/refdata/showAllSchemes.do" but "/standardLayout.jsp", so the selected application for mapping actions is the root application! (it then looks for the action named "/refdata/showAllSchemes" inside the default application config) Is this the expected behaviour when doing an include?. Later on in the RequestProcessor the correct uri is got from path = (String) request.getAttribute(INCLUDE_SERVLET_PATH); if (path == null) { path = request.getServletPath(); } The first call gets the correct path (/refdata/showAllSchemes.do) in this case. Should this be done in RequestUtils.selectApplication as well? finally, an obvious way to get around these problems in tiles is to refer to a layout page in the sub application. unfortunately this means copying the layout page into every sub application. Then as well we loose access to the root application and have to copy the pages/action mappings into every sub app as well... GRRR! Ian —------------------------------ Hi all, Got a problem trying to move our app over to using tiles and its probably specifically related to sub applications. In this simple case, we have the default app and a sub app called refdata. In the refdata config we have something along these lines: <action path="/showAScheme" type="....."> <forward name="success" redirect="false" path="refdata.refdata" /> </action> <action path="/showAllSchemes" type="....."> <forward name="success" redirect="false" path="/tree.jsp" /> </action> and the tile def: <definition name="refdata.refdata" extends="site.mainLayout"> <put name="body" value="/refdata/showScheme.jsp" /> <put name="left" value="/refdata/showAllSchemes.do" /> </definition> Now, when we do http://localhost/testapp/refdata/showAScheme.do the showScheme.jsp displays, but the /refdata/showAllSchemes.do fails with an invalid request. However, if I place <put name="left" value="/applicationList.do" /> in the tiledef then the application list action in the default app works fine. Obviously tiles is working in default app space. Anybody got a patch or workaround for this problem? Ian -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>