You can also use a controller class/action to do it

<tiles:insert definition="erp.mainLayout" flush="true"
controller="/selectBodyTile.do"/>

and then in the action class for /selectBodyTile.do you can access the
ComponentContext which will allow you to change the attributes before tiles
does the insert thus allowing you to programmatically set the inner tile to
be a JSP,another tile, etc. of your choice.

class SelectBodyControllerAction extends Action {
    public ActionForward execute( ActionMapping mapping,
                                               ActionForm form,
                                               HttpServletRequest request,
                                               HttpServletResponse response)
     throws Exception {

        ComponentContext temp =
            ComponentContext.getContext(request);

        if(isFullMoon(request)) {
            temp.putAttribute("body", "fullmoon.jsp");
        } else {
            temp.putAttribute("body", "justanotherday.jsp");
        }

        return super.execute(mapping, form, request, response);
    }
}

Controllers can also be a Derivative of TilesController which gives you the
Context as a param



"Bj" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED]
> you can use java to do this. For exemple, if you pass the boby url in
> request parameter.
>
> <%
> String contentUrl = request.getParameter("contentUrl");
> if (contentUrl == null ) contentUrl = "/defaultContentUrl.jsp"
> %>
>
> <tiles:insert definition="erp.mainLayout" flush="true">
> <put name="body" value="<%=contentUrl%>" />
> </tiles:insert>
>
> I hope there's a better way to do this (maybe through external tile xml
> configuration files ) but I've never tried.
>
> Bj
>
> PC Leung a écrit :
>
> > I am very new Tiles.
> > I just want the content layout to change
> > and keep header, footer and left menu unchanged.
> >
> > Is it right to change the value programmatically and how?
> > or
> > do it in another way?
> >
> > <tiles:insert definition="erp.mainLayout" flush="true">
> >   <put name="body" value="/xxx.jsp" />
> > </tiles:insert>
> >
> > Thank you very much.
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to