You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@turbine.apache.org by Tony Oslund <to...@prepare-enrich.com> on 2010/09/01 17:20:03 UTC
Re: [?? Probable Spam] Template execution finished listener
Hello Atti,
One option is to...
- create an object that will do what you want
- drop a reference to it into the context
- reference it from your velocity template
Occasionally I have had a need to execute business logic from within a
template and this approach works for that.
Another other option is to create a "Tool" (I am using 2.3.1... I think this
is still available in 2.3.2), and then to register it within your turbine
props.
For example here is a basic tool that I use that I find handy for string
manipulation (yours would obviously do something different)
public class StringGoodies implements
org.apache.turbine.services.pull.ApplicationTool {
public StringGoodies() {
}
public void init(Object data) {
}
public void refresh() {
}
public String replicate (String str, int qty) {
return StringFunctions.replicate(str, qty);
}
...
}
put something like this in your turbine props...
tool.global.strtool=com.somecompany.somelib.StringGoodies
Then it is always available within your velocity templates and can be used
like (again yours would have different methods)
$strtool.replicate("=",20)
here are some notes from the example turbine props file
# global: tool is instantiated once and that instance is available
# to all templates for all requests. Tool must be threadsafe.
#
# request: tool is instantiated once for each request (although the
# PoolService is used to recycle instances). Tool need not
# be threadsafe.
#
# session: tool is instantiated once for each user session, and is
# stored in the user's temporary hashtable. Tool should be
# threadsafe.
#
# persistent: tool is instantitated once for each use session, and
# is stored in the user's permanent hashtable. This means
# for a logged in user the tool will be persisted in the
# user's objectdata. Tool should be threadsafe and
# Serializable.
Best of luck
Tony
--------------------------------------------------
From: "Szűcs Attila" <sz...@codespring.ro>
Sent: Wednesday, September 01, 2010 1:19 AM
To: <us...@turbine.apache.org>
Subject: [?? Probable Spam] Template execution finished listener
> Hi,
>
> I am using Turbine 2.3.2 with Hibernate 3. My problem is that the
> Hibernate session is not active when my (Velocity 1.6.4) template
> executes, and I am accessing fields from the database for which Hibernate
> needs lazy initialization. Therefore I get a LazyInitializationException -
> no Session error. Since I want my Hibernate session to be alive when a
> velocity template executes I would like to have a class to execute after
> the velocity vm. This way I could close my Hibernate session properly,
> only after the velocity template has been rendered. (Disabling lazy
> initialization in Hibernate is not an option for me). Are there any
> possibilities that Turbine offers to write a kind of listener (I am not
> sure how to call it) that would execute right after a velocity screen has
> been executed?
>
> Thanks ,
> Atti
>
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@turbine.apache.org
For additional commands, e-mail: user-help@turbine.apache.org