1

I am new to using Apache Velocity. What is the correct way of returning a string from a Macro or a Velocimacro?

Since I did not have a clue on how to return a string from a Macro, I decided to do something like

#macro(query_url $query_param)
     q=$query_param
 #end

I can then call the Macro using: #query_url("*")

The problem with this is that the resulting value contains a Tab or number of Spaces before the 'q=' when I call it. One option is to delete the spaces like:

#macro(query_url $query_param)q=$query_param#end 

This fixes my problem but is very hard to read. To take this a step further consider:

#macro(default_query_url)
    #if($request.params.get('q'))
        #query_url($request.params.get('q'))
    #else
        #query_url("*")
     #end
 #end

Vs.

#macro(default_query_url)
#if($request.params.get('q'))#query_url($request.params.get('q'))#else#query_url("*")#end
#end

In the second case there is no whitespace, but editing it would be very difficult for more complicated macros.

I am curious what is the correct way to return values from Velocimacros and if I can Trim the resulting Whitespace before returning it?

O.O.
  • 1,973
  • 6
  • 28
  • 40

0 Answers0