In our apps we do similar things in a different way.

Our Tiles definition for layout looks like this:

<definition name=".layout" template="..../layout.jsp">
    <put-attribute name="title" value=".title" />
    <put-attribute name="content" value=".content" />
</definition>



Inside layout.jsp we insert the content provided by action like this:

<div id="content-container">
        <tiles:insertAttribute name="content" />
</div>



Actions provide content by using annotations:

@TilesDefinition(
        extend=".layout",
        putAttributes={
                @TilesPutAttribute(name="title", value="titel"),
                @TilesPutAttribute(name="content",value="content.jsp")
        }
)



Hope that helps!



Regards,
Christoph





> From: Vishal Jhagadiawala <vish_...@yahoo.com.INVALID>
> To: Struts Users Mailing List <user@struts.apache.org>, 
> Date: 21.11.2016 16:14
> Subject: Re: action tag with tile result causing StackOverflowError-
> 
> Hi Christoph,
> Please find my response below. 
> 
> Here is my actionTileResult.jsp (it is for test)
> ----actionResult.jsp
> This is text :
> <p>
> <tiles:insertAttribute name="title"/>
> </p>
> 
> - how should showcase.index.actionResult and showcase.index belong to 
each 
> other?   showcase.index is a global layout, and there are dynamic 
> pages based on action outcome eg . showcase.index.actionResult will 
> be included in the global layout
> 
> - shouldn't showcase.index.actionResult set the body attribute?    
> currently to reproduce the issue, I have used title attribute, but 
> we tile definition can be more specific based on need
> 
> - why is there an <s:action> tag in layout.jsp?          this is to 
> include dynamic result based on outcome of the action logic. 
> 
> 
> Regards,
> Vishal
> 
>     On Monday, 21 November 2016, 4:19, Christoph Nenning 
> <christoph.nenn...@lex-com.net> wrote:
> 
> 
>  Hi,
> 
> 
> some questions about your code snippets:
> 
> - how does actionResult.jsp look?
> - how should showcase.index.actionResult and showcase.index belong to 
each 
> other?
> - shouldn't showcase.index.actionResult set the body attribute?
> - why is there an <s:action> tag in layout.jsp?
> 
> 
> Regards,
> Christoph
> 
> 
> 
> > From: Vishal Jhagadiawala <vish_...@yahoo.com.INVALID>
> > To: Struts Users Mailing List <user@struts.apache.org>, 
> > Date: 19.11.2016 20:55
> > Subject: Re: action tag with tile result causing StackOverflowError-
> > 
> > Hi ,
> > I also verified the exactly same error happens in struts 2.5.5 with 
> > tiles 3.0.7.
> > if we try to use action tag as below with tiles result it's goes in 
> > infinite loop and throws it throws java.lang.StackOverflowError,
> > <s:action name="myTestAction" namespace="/tiles" 
executeResult="true"/>
> > 
> > --------Layout.jsp 
> > <body>    <tiles:insertAttribute name="header"/>    
> > <tiles:insertAttribute name="body"/> <p>Notice that this is a layout
> > made in JSP</p>      <!-- issue with the action -->  <s:action 
> > name="myTestAction" namespace="/tiles" 
> executeResult="true"/></body></html>
> > 
> > ------------- struts.xml  <action name="myTestAction">            
> > <result type="tiles">showcase.index.actionResult</result>          
> > <result name="success" type="tiles">showcase.index.actionResult</
> > result>  </action>        ------------------tiles.xml
> >    <definition name="showcase.index" template="/WEB-INF/tiles/
> > layout.jsp">        <put-attribute name="title" value="Tiles 
> > Showcase"/>        <put-attribute name="header" value="/WEB-INF/
> > tiles/header.jsp"/>        <put-attribute name="body" value="/WEB-
> > INF/tiles/body.jsp"/>    </definition>
> > <definition name="showcase.index.actionResult" template="/WEB-INF/
> > tiles/actionResult.jsp">        <put-attribute name="title" 
> > value="Action Result"/></definition>
> > 
> >  Let me know if somebody faced same issue. 
> > Regards,Vishal
> > 
> >    On Saturday, 19 November 2016, 10:28, Vishal Jhagadiawala 
> > <vish_...@yahoo.com.INVALID> wrote:
> > 
> > 
> >  Hi ,
> > I have upgraded my struts application to version 2.3.30 and apache-
> > tiles 2.2.2 and I am facing issue with s:action tag and tiles 
> > result. it goes in recursive loop and throws StackOverflowError as 
> below. 
> > also I am able to reproduce this issue in showcase application, I 
> > have outlined the tiles.xml , struts-tile.xml and layout.jsp as below. 

> > it throws java.lang.StackOverflowError: null at 
> > org.apache.catalina.core.ApplicationHttpRequest.getAttribute
> > (ApplicationHttpRequest.java:230)        at 
> > org.apache.catalina.core.ApplicationHttpRequest.getAttribute
> > (ApplicationHttpRequest.java:230) at 
> > org.apache.catalina.core.ApplicationHttpRequest.getAttribute
> > (ApplicationHttpRequest.java:230) at 
> > org.apache.catalina.core.ApplicationHttpRequest.getAttribute
> > (ApplicationHttpRequest.java:230) .................. (truncated) 
> > .................        at 
> > com.opensymphony.xwork2.DefaultActionInvocation.invoke
> > (DefaultActionInvocation.java:245) at 
> > com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept
> > (AliasInterceptor.java:193) at 
> > com.opensymphony.xwork2.DefaultActionInvocation.invoke
> > (DefaultActionInvocation.java:245) at 
> > 
> 
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept
> > (ExceptionMappingInterceptor.java:189) at 
> > com.opensymphony.xwork2.DefaultActionInvocation.invoke
> > (DefaultActionInvocation.java:245) at 
> > org.apache.struts2.impl.StrutsActionProxy.execute
> > (StrutsActionProxy.java:54) at 
> > org.apache.struts2.components.ActionComponent.executeAction
> > (ActionComponent.java:288) at 
> > org.apache.struts2.components.ActionComponent.end
> > (ActionComponent.java:172) at 
> > org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag
> > (ComponentTagSupport.java:42) at 
> > 
> 
org.apache.jsp.WEB_002dINF.tiles.layout_jsp._jspx_meth_s_005faction_005f0
> > (layout_jsp.java:210) at 
> > 
> 
org.apache.jsp.WEB_002dINF.tiles.layout_jsp._jspService(layout_jsp.java:109)
> > 
> > Here is my usage, 
> > Layout.jsp
> > <html>    <head><title>Struts2 Showcase - <tiles:getAsString 
> > name="title"/></title></head><body>    <tiles:insertAttribute 
> > name="header"/>    <tiles:insertAttribute name="body"/> <p>Notice 
> > that this is a layout made in JSP</p>        <!-- Vishal- action 

> > tag which is causing issue with tiles result --> <s:action 
> > name="myTestAction" namespace="/tiles" executeResult="true" 
> /></body></html>
> > 
> > tiles.xml
> >    <definition name="showcase.index" template="/WEB-INF/tiles/
> > layout.jsp">        <put-attribute name="title" value="Tiles 
> > Showcase"/>        <put-attribute name="header" value="/WEB-INF/
> > tiles/header.jsp"/>        <put-attribute name="body" value="/WEB-
> > INF/tiles/body.jsp"/>    </definition>      <!-- Vishal-- my 
> 
> definition -->    <definition name="showcase.index.actionResult" 
> > template="/WEB-INF/tiles/actionTileResult.jsp">        <put-
> > attribute name="title" value="Tiles Result from action"/>    
> </definition>    
> > struts-tiles.xml
> >        <action name="index">            <result 
> > type="tiles">showcase.index</result>            <result 
> > name="success" type="tiles">showcase.index</result>        </action>
> >        <!-- my test action to replicate the issue --> <action 
> > name="myTestAction">            <result 
> > type="tiles">showcase.index.actionResult</result>            <result
> > name="success" type="tiles">showcase.index.actionResult</result>    
> >    </action>  
> > actionTileResult.jsp
> > <tiles:importAttribute name="title" scope="request"/><html>    
> > <head><title>Action tile result <tiles:getAsString name="title"/></
> > title></head><body> <p>Notice that this is a  jsp</p></body></html>
> > 
> > 
> > Please let me know anybody faced similar issue and any solution to it.
> > Regards,Vishal
> > 
> > 
> 
> This Email was scanned by Sophos Anti Virus
> 
> 
> 

This Email was scanned by Sophos Anti Virus

Reply via email to