Thanks for the detailed information, Nathan!  I already have a subclass
of the VVS, so I think I'll try that route, although I hope to upgrade
to VelocityTools2 for our Fall release... 

-----Original Message-----
From: Nathan Bubna [mailto:[EMAIL PROTECTED] 
Sent: Monday, May 05, 2008 2:43 PM
To: Velocity Users List
Subject: Re: Invoking VVS From Java Code

Any chance you're using VelocityTools 2?  If so, then this is easy.
It was one of the big objectives for version 2 to make this simple.
All you need is either a FilterConfig, ServletConfig, or even just the
ServletContext and you can retrieve the VelocityView instance that the
VVS is using.

In VelocityTools 1.x, it's trickier and depends a bit on what you are
trying to do.   Here's the basics:

1. create a subclass of the VVS
2. have the subclass override init(ServletConfig) with a method that:
   a. calls super.init(config)
   b. puts the toolboxManager (a protected member variable) and the
result of getVelocityEngine() (a protected method) in the servlet
context attributes 3. in the code you wish to do this rendering, get the
toolboxManager and velocityEngine out of the servlet context attributes
4. create a ChainedContext using the engine, request, response (can be
null), and servlet context 5. call
yourChainedContext.setToolbox(toolboxManager.getToolbox(yourChainedConte
xt))
6. get your template from velocityEngine.getTemplate(templateName)
7. merge the template with yourChainedContext into the Writer of your
choice

i suppose you might simplify some of the above by just putting the
servlet instance itself into the servlet context and having it do the
context creation and template retrieval through its createContext(...)
and getTemplate(name) methods, but it seems a little odd to be passing a
servlet itself around


On Mon, May 5, 2008 at 12:43 PM, White, Tim <[EMAIL PROTECTED]> wrote:
> Hello -
>
>   My application has a Velocity View Servlet running (extremely well).
>
>   In some cases, I'd like to use it to generate rendered output to a  
> String inside another part of the application.
>
>   Is there some way I can latch onto the Velocity that VVS is using to

> render a template without doing a URL connection over to VVS?
>
>   I'd like to avoid duplicating all the setup logic that I've built 
> for  VVS to initialize a separate Velocity engine for this purpose.
>
>   Thanks,
>
>  Tim
>
>
>  This communication is the property of Qwest and may contain 
> confidential or  privileged information. Unauthorized use of this 
> communication is strictly  prohibited and may be unlawful.  If you 
> have received this communication  in error, please immediately notify 
> the sender by reply e-mail and destroy  all copies of the
communication and any attachments.
>

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