Is there a way to debug Velocity templates in the traditional code debugging sense?

11,716

Solution 1

I had not found any yet. The closest I can get is to hack a logging framework to print out information that you want.

What you do is:

  1. create an class with logging method which return boolean value.
  2. Inject the object into velocity context
  3. From inside velocity template you can call the logging method with #if($logger.log($data)) #end

Solution 2

There might be? but what I've found works is if everything is put into a special map, that is put into the context. Thus you can echo the entire contents of this special map to the screen while rendering (without having to know the keys)... thus indicating the exact value of any given item in the context at any point. It isn't foolproof, but VTL seems to be for "quick n dirty" stuff only.

Solution 3

There is no step through, nor some kind of built in "print variables". This is something that bothers me too, but using velocity was a decision that was made before I joined our project...

Share:
11,716
Peter
Author by

Peter

Technical senior executive specializing in creation and leadership of top-tier engineering teams that care deeply about the underlying business. Experienced developer and architect, specializing in highly scalable cloud-based SaaS applications.

Updated on June 05, 2022

Comments

  • Peter
    Peter about 2 years

    We make heavy use of Velocity in our web application. While it is easy to debug the Java side of things and ensure the Velocity Context is populated correctly, it would be extremely valuable to be able to step through the parsing of the VTL on the merge step, set breakpoints, etc. Are there any tools or IDEs/IDE plugins that would make this kind of thing possible with VTL (Velocity Template Language)?