Hi Praveen,
By default, you can't redefine a macro once it has been set. Thus
when you attempt to set the #body macro for the second time, it's
ignored (there may well be a message in the logs). You can change
this behavior using the config parameter:
velocimacro.permissions.allow.inline.local.scope = true
This will mean the macro doesn't 'exist' outside the defining template.
However, there is a better way...the kind of layout you're trying to
achieve is handled more neatly (and with less work for you) by the
VelocityLayoutServlet, part of the Velocity Tools subproject which
allow two-pass rendering of the template. I strongly suggest you take
a look:
http://jakarta.apache.org/velocity/tools/view/layoutservlet.html
- simon
On 19 Oct 2005, at 03:31, Praveen Ray wrote:
Hi All
I'm trying to abstract the common layout in one .vm file
like this:
layout.vm:
-----------
<html>
<body>
<div> #parse( "header.vm" ) </div>
<div> #body() </div>
<div> #parse( "footer.vm") </div>
</body>
</html>
homepage.vm
-----------
#macro( body )
This is Home Page
goto <a href='/myinfo'>My Info</a>
#end
#parse( "layout.vm")
myinfo.vm
---------
#macro( body )
This is My Info
#end
#parse( "layout.vm")
As you can see the general layout of the site has been
abstracted into layout.vm and each individual template is
just generating the content for the main body. Although
nice scheme, this doesn't work. The homepage displays
properly, however clicking on 'My Info' link on the home,
takes you a screen which has same content as the body of
the homepage. It's, as if, the #body macro from homepage is
used to render myinfo page. Looks like similar named macros
from different pages are not unique?
Is this kind of stuff even doable in Velocity? If yes, what
am I doing wrong? If not, can someone please suggest an
alternate way of abstracting the layout in one file?
Thanks
- Praveen
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com
---------------------------------------------------------------------
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]