Velocity Templates and Newlines
If you're reading this article you've probably encounted the same problem as I have. I was trying to put a newline '\n' character in the value of a variable in a Velocity template.
Attempt 1:
I assumed \n would work...
#if ( !$foo )
#set ( $foo = "There was no foo set in the Context.\nPlease do something about it." )
#end
This produced There was no foo set in the Context.\nPlease do something about it. as the value of $foo.
Attempt 2:
I just thought this was worth a shot
#if ( !$foo )
#set ( $foo = "There was no foo set in the Context.
Please do something about it." )
#end
And the template failed to compile
Solution:
Basically, the easiest way I found is to place the newline, carriage return or other special character in the context.
public Template handleRequest( HttpServletRequest request, HttpServletResponse response, Context context )
{
...
context.put( "nl", "\n" );
context.put( "cr", "\r" );
...
}
And in your template:
#if ( !$foo )
#set ( $foo = "There was no foo set in the Context.${nl}Please do something about it." )
#end
Maybe not the best solution but it works for me. If you expect to use it across your entire application I suggest you override VelocityServlet.createContext in your Servlet to add these characters to every context in your application.
Example:
About this entry
You’re currently reading “Velocity Templates and Newlines,” an entry on Weblog of Michael Cutler
- Published:
- 21st July 2005 / 10:07pm
- Category:
- Jakarta Velocity
No comments
Jump to comment form | comments rss [?] | trackback uri [?]