0

When defining a tiles definition or attribute, can you reference another definition or attribute without inheriting?

I have all sorts of JSP fragments, CSS, and JavaScript that would be considered 'common'. They are certainly not needed for every page, and thus inheriting directly doesn't seem like it's going to work.

Example:

<tiles-definitions>
    <definition name="currentBodyDefinition" template="[...specific body template...]" extends="Components">
        <!-- if it's not already defined within Components, add it here -->
    </definition>

    <definition name="page" extends="pageTemplate">
        <put-attribute name="body" value="currentBodyDefinition" />
        <put-attribute name="scripts" value="[...???...]" /> <!-- can I reference another definition(s) or attribute(s) here??? -->
        <put-attribute name="styles" value="[...???...]" /> <!-- can I reference another definition(s) or attribute(s) here??? -->

    </definition>
</tiles-definitions>
Tony Card
  • 2,084
  • 3
  • 20
  • 27

1 Answers1

0

I think you can do something like this:

    <definition name="layout" page="/WEB-INF/tiles/layouts/layout.jsp">
        <put name="title" type="string" value="${title}"/>
        <put name="header" type="definition" value="${header}"/>
        <put name="content" type="definition" value="${content}"/>
    </definition>

    <definition name="headerDef" page="/WEB-INF/tiles/header.jsp">
        <put name="headerText" type="string" value="Header String"/>
    </definition>

    <definition name="contentDef" page="/WEB-INF/tiles/layouts/contentPage.jsp">
        <put name="searchPanel" type="definition" value="panelDef"/>
        <put name="somePage" type="page" value="/WEB-INF/tiles/somePage.jsp"/>
    </definition>

    <definition name="page" extends="layout">
        <put name="title" value="Some Title String"/>
        <put name="header" value="headerDef"/>
        <put name="content" value="contentDef"/>
    </definition>
varcharmander
  • 238
  • 1
  • 11