Personally, I found doing menu layouts via tiles was to complicated and
definitely wan't as clean as I'd like.  My approach was to create my own
custom xml file like:

<tab-menu       name="facilityBasicTabMenu">
        <images>
                <selected       preImage="../images/preTab_b.gif"
                                postImage="../images/postTab_b.gif"
                                style="selectedTab"/>

                <unselected     preImage="../images/preTab_y.gif"
                                postImage="../images/postTab_y.gif"
                                style="unselectedTab"/>
        </images>
        <tabs>
                <tab    name="facilityTab"
                                display="Facility"
                                action="/basicInfoPage.3mv"
                                paramId="facilityOid"
                                paramName="facility"
                                paramProperty="facilityOid"
                                paramScope="request"
                                markAsJump="false">
                </tab>
                ...
<tab-menu>

Since it was my own xml, I could create it in any fashion that met my needs.

Then, I created a struts plugin to load this file, use digester to parse it
into a set of config object (much like struts does in many other places),
and then created a custom tag to generate the html for my custom menu using
the configuration information that was loaded into the servletContext via
the plugin.

Finally, I use tiles decide which tabMenu I want to use, and which tab on
that menu to highlight.

Here is the tiles snip:
        <definition name="displayAddAddressForm" extends="masterEditorPage">
                <put name="tabMenu" value="facilityBasicTabMenu" />
                <put name="tab" value="addressTab" />
                <put name="formAction"          value="/addAddress.3mv"/>
                <put name="button"      value="add"/>
                <put name="messageKey" value="title.addAddress"/>
                <put name="header"      
value="/jsps/facility/facilitySummaryView.jsp"/>
                <put name="header2"     value="/jsps/facility/facilityIndex.jsp"/>
                <put name="form"        value="/jsps/common/addressEdit.jsp"/>
                <put name="listView"    value="/jsps/facility/addressList.jsp"/>
        </definition>

Here is the jsp snip:
...
  <tiles:useAttribute name="tabMenu" classname="java.lang.String" />
  <tiles:useAttribute name="tab" classname="java.lang.String" />
...
  <%-- TabLayout Menu--%>
  <threemv:tabMenu name="<%=tabMenu%>" tab="<%=tab%>"/>
...



This allowed me to configure my menus separately from the pages the menus
were used on, and did away with a combersome xml speak around it.  The major
objective was that I could create a handful (ended up with 4) "master"
pages/tiles that all other tiles extended.  This allows my team to
concentrate on the smaller pieces and not the general look and feel.  They
simple create a new tiles definition as above for each new page, and define
the menu and menu items that they wish to be highlighted.

Not sure what your goals are, but there is one perspective.  Hope it helps.

Thanks.

Gary

-----Original Message-----
From: Mick Knutson [mailto:[EMAIL PROTECTED]
Sent: Tuesday, June 03, 2003 11:00 AM
To: [EMAIL PROTECTED]
Subject: Tiles menuLayout.jsp extending in the tiles-def.xml?


I need help with extending the menuLayout.jsp and menu.jsp i the
tiles-def.xml.

I need to know if there is a cleaner way to do this:
====================================================

tiles-def.xml:
===============
    <!-- =======================================================  -->
    <!-- Menus definitions                                                             
           -->
    <!-- =======================================================  -->

    <!-- Menu bar definition
        This definition describe a "bar" of menu stacked verticaly.
            Each menu is describe elsewhere.
            Add new entry in the list to add new menu.
    -->
    <definition name=".default.navigation.layout"
path="/WEB-INF/default/navigationLayout.jsp" >
        <putList name="list" ><add value=".member.navigation" /></putList>
        <putList name="list" ><add value=".medical.navigation" /></putList>
        <putList name="list" ><add value=".location.navigation" /></putList>
        <putList name="list" ><add value=".contact.navigation" /></putList>
        <putList name="list" ><add value=".alert.navigation" /></putList>
    </definition>

    <definition name=".member.navigation.layout"
extends=".default.navigation.layout" >
        <putList name="list" ><add value=".member.navigation.on"
/></putList>
        <putList name="list" ><add value=".medical.navigation" /></putList>
        <putList name="list" ><add value=".location.navigation" /></putList>
        <putList name="list" ><add value=".contact.navigation" /></putList>
        <putList name="list" ><add value=".alert.navigation" /></putList>
    </definition>

    <definition name=".medical.navigation.layout"
extends=".default.navigation.layout" >
        <putList name="list" ><add value=".member.navigation" /></putList>
        <putList name="list" ><add value=".medical.navigation.on"
/></putList>
        <putList name="list" ><add value=".location.navigation" /></putList>
        <putList name="list" ><add value=".contact.navigation" /></putList>
        <putList name="list" ><add value=".alert.navigation" /></putList>
    </definition>

    <definition name=".location.navigation.layout"
extends=".default.navigation.layout" >
        <putList name="list" ><add value=".member.navigation" /></putList>
        <putList name="list" ><add value=".medical.navigation" /></putList>
        <putList name="list" ><add value=".location.navigation.on"
/></putList>
        <putList name="list" ><add value=".contact.navigation" /></putList>
        <putList name="list" ><add value=".alert.navigation" /></putList>
    </definition>

    <definition name=".contact.navigation.layout"
extends=".default.navigation.layout" >
        <putList name="list" ><add value=".member.navigation" /></putList>
        <putList name="list" ><add value=".medical.navigation" /></putList>
        <putList name="list" ><add value=".location.navigation" /></putList>
        <putList name="list" ><add value=".contact.navigation.on"
/></putList>
        <putList name="list" ><add value=".alert.navigation" /></putList>
    </definition>

    <definition name=".alert.navigation.layout"
extends=".default.navigation.layout" >
        <putList name="list" ><add value=".member.navigation" /></putList>
        <putList name="list" ><add value=".medical.navigation" /></putList>
        <putList name="list" ><add value=".location.navigation" /></putList>
        <putList name="list" ><add value=".contact.navigation" /></putList>
        <putList name="list" ><add value=".alert.navigation.on" /></putList>
    </definition>




    <!-- =======================================================  -->
    <!-- Menus Items                                                                   
           -->
    <!-- =======================================================  -->

    <definition name=".member.navigation"
path="/WEB-INF/default/navigation.jsp" >
        <put name="title" value="nav.title.member" />
        <put name="section_url" value="/member.do" />
    </definition>

    <definition name=".member.navigation.on" extends=".member.navigation">
        <putList name="items" >
            <item   value="nav.submenu.user"
                                link="/registration.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
            <item   value="nav.submenu.profile"
                                link="/profile.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
        </putList>
    </definition>



    <definition name=".medical.navigation"
path="/WEB-INF/default/navigation.jsp" >
        <put name="title" value="Medical History" />
        <put name="section_url" value="/member.do" />
    </definition>

    <definition name=".medical.navigation.on" extends=".medical.navigation">
        <putList name="items" >
            <item   value="nav.submenu.surgery"
                                link="/surgery.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
            <item   value="nav.submenu.prosthesis"
                                link="/prosthesis.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
            <item   value="nav.submenu.allergies"
                                link="/member.do"
                        classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
        </putList>
    </definition>




    <definition name=".location.navigation"
path="/WEB-INF/default/navigation.jsp" >
        <put name="title" value="nav.title.alert" />
        <put name="section_url" value="/member.do" />
    </definition>

    <definition name=".location.navigation.on"
extends=".location.navigation">
        <putList name="items" >
            <item   value="nav.submenu.location.list"
                                link="/locationList.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
            <item   value="nav.submenu.location.add"
                                link="/locationAdd.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
        </putList>
    </definition>




    <definition name=".contact.navigation"
path="/WEB-INF/default/navigation.jsp" >
        <put name="title" value="nav.title.contact" />
        <put name="section_url" value="/contactList.do" />
    </definition>

    <definition name=".contact.navigation.on" extends=".contact.navigation">
        <putList name="items" >
            <item   value="nav.submenu.contact.list"
                                link="/contactList.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
            <item   value="nav.submenu.contact.add"
                                link="/contactAdd.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
        </putList>
    </definition>




    <definition name=".alert.navigation"
path="/WEB-INF/default/navigation.jsp" >
        <put name="title" value="nav.title.alert" />
        <put name="section_url" value="/alert.do" />
    </definition>

    <definition name=".alert.navigation.on" extends=".alert.navigation">
        <putList name="items" >
            <item   value="nav.submenu.alert.list"
                                link="/alertList.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
            <item   value="nav.submenu.alert.add"
                                link="/alertAdd.do"
                                
classtype="org.apache.struts.tiles.beans.SimpleMenuItem" />
        </putList>
    </definition>






menuLayout.jsp:
===============
<tiles:useAttribute id="list" name="list" classname="java.util.List" />
<%-- Iterate over names.
  We don't use <iterate> tag because it doesn't allow insert (in JSP1.1)
--%>

<!--<table border="1"><tr>-->

<%
Iterator i=list.iterator();
while( i.hasNext() )
  {
  String name= (String)i.next();
%>

<!--<td>-->
<tiles:insert name="<%=name%>" flush="true" />
<!--</td>-->

<%
  } // end loop
%>

_________________________________________________________________
STOP MORE SPAM with the new MSN 8 and get 2 months FREE*
http://join.msn.com/?page=features/junkmail


---------------------------------------------------------------------
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