Any lightweight templating solutions in Java with support for conditional formatting?
java, string, stringtemplate, template-engine, templates
Solution
EDIT: rewrite...
If you don't care about design, then you can readily pick a template engine at random, or because you like its name, or whatever. If you don't have criteria for selecting an engine, then who cares which one you pick?
On the other hand, if you do care about design, such as in using the Model-View-Controller (MVC) design pattern, then your choices quickly diminish.
Most of the answers here emphasize the power of the various template engines. But the whole point of MVC is that you don't want to do more, because doing more in your templates will eventually hurt you very bad. Business logic does not belong in the View, it belongs in the Model. Control logic belongs in the controller. There is only one template engine that actually enforces the MVC pattern. If you don't desire the MVC pattern (perhaps you are moving beyond it), that one engine still helps you to not hurt yourself and encourages you to partition your functionality properly.
There is really only one good template engine: StringTemplate. See http://www.cs.usfca.edu/~parrt/papers/mvc.templates.pdf for details of why.
I have used it on multiple platforms (Python, Java, .Net) as well as many of the alternatives, and StringTemplate rules.
Decision done. Enjoy. Best wishes.
Problem
I'm using MessageFormat to format some addresses with a template like this: ``` "{0}\n{1}\n{2}\n{3}, {4} {5}" ``` where - 0 = street 1 - 1 = street 2 - 2 = street 3 - 3 = city - 4 = state - 5 = zip Most of these fields are optional when captured. How do I avoid having an empty line when for instance, there is not street 3? I could use a template like this "{0}{1}{2}{3}{4}{5}" and then substitute either "street 3\n" or "" accordingly, but then the template doesn't provide much benefit toward formatting. Is there a way to include conditionals in the format string? Or is there another, preferably lightweight, templating tool available that supports conditional formatting?