[prev in list] [next in list] [prev in thread] [next in thread]
List: velocity-user
Subject: RE: Include directive behavior
From: <Jason.Bruce () cox ! com>
Date: 2004-11-17 16:18:55
Message-ID: D17AA32908F2634AAC8CBB10782A2D6C22B152 () CATL0MS03 ! corp ! cox ! com
[Download RAW message or body]
Shinobu,
Thank you for the reply. I'll file an issue and see what the developers
say. Meanwhile, I did get a workaround working with the userdirective.
One thing I forgot to mention was that I intended to override the system
"include" directive with my userdirective, and the documentation did not
mention if this was possible.
However, I found the answer which I'll submit to the list for the
benefit of the archives. :-)
To set a userdirective at runtime, use:
VelocityEngine.setProperty("userdirective","myDirectiveClass")
Before calling VelocityEngine.init().
In order to override a system directive, make myDirectiveClass.getName()
return "include" (or the name of whatever system directive you're
replacing).
Now, in your templates, when you call #include, it will execute your own
directive instead of Velocity's Include directive.
---------------------
Hi Jason,
> However, renderOutput() will throw a ResourceNotFoundException if the
> Included file does not exist (the exception is caught in renderOutput,
> but thrown again).
> This exception is not handled by render(), and so the exception gets
> passed up the call stack without outputErrorToStream() ever being
> called.
>
> So my first question is: is this a bug, or is there a reason to not
> allow writing an error to the output stream in this case?
I don't know about this. Maybe it should be discussed in the developer
list.
## Or you can just file an issue and see what happens. B)
> Question 2: I can modify the Include directive, but is there a way to
> configure Velocity at runtime to use the custom directive, so that I
can
> continue using an unmodified velocity jar?
> I'm using setProperty() to override velocity.properties with values
that
> are in my application's config, but I can't see a way to do that to
> override what's in directive.properties.
Try userdirective.
http://jakarta.apache.org/velocity/developer-guide.html#FAQ3
Best regards,
-- Shinobu Kawai
--
Shinobu Kawai <shinobu.kawai@gmail.com>
---------------------------------------------------------------------
To unsubscribe, e-mail: velocity-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: velocity-user-help@jakarta.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic