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" <[email protected]>
Sent: Wednesday, September 01, 2010 1:19 AM
To: <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to